- 此问题在此处已有答案**:
How can I compare a string and a char array in Java?(4个答案)
11小时前关门了。
我在这里试图找出在这个字符串数组中索引i中的每个元素是否都是按字典顺序排列的
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;
public class lexo {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String[] strs = new String[3];
HashMap<Integer,String> map = new HashMap<>();
for (int i = 0; i < strs.length; i++) {
strs[i] = in.next();
}
for (int i = 0; i < strs.length; i++) {
map.put(i,strs[i]);
System.out.println(map);
}
for (int i = 0; i < strs.length; i++) {
char[] txt = strs[i].toCharArray();
Arrays.sort(txt);
String a = map.get(i;
if(a.equals(txt)){
map.remove(i);
}
}
System.out.println(map);
}
}
当我输入如下内容时:abc bca abc i应该获得类似于{0 = abc,2 = abc}的Map,但它不是
2条答案
按热度按时间6yt4nkrj1#
好吧,问题就在这里。
(我修正了错字...)
在此行:
你正在比较一个(排序的)字符数组和一个
String
。这将返回false
。一个字符数组永远不等于String
。一个字符数组只能等于一个字符数组。事实上,Java数组 * 只等于它自己 *。您可以通过阅读
Object.equals(Object)
的javadoc ...来确认这一点,它没有被数组类型覆盖。在比较之前,您需要将
char[]
重新转换为String
。提示:查看String
的javadocs,看看您是否能够找出需要做的事情。o4tp2gmn2#
您的**
a.equals(txt)
**条件将始终为false。如果要执行此比较,您必须将字符数组转换为String对象,或者将String转换为char数组,然后执行比较。将char数组转换为String,然后进行比较:
或
将String值转换为char数组,然后进行比较。