Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将2D CharArray转换为字符串并使用.charAt()比较字符是否正确?_Java_String_For Loop_Multidimensional Array_Charat - Fatal编程技术网

Java 将2D CharArray转换为字符串并使用.charAt()比较字符是否正确?

Java 将2D CharArray转换为字符串并使用.charAt()比较字符是否正确?,java,string,for-loop,multidimensional-array,charat,Java,String,For Loop,Multidimensional Array,Charat,因此,我有一个名为temp的char变量,当我在2D数组之后的第三个for循环中时,我想将它与存储在X CharArray[X][Y]中的元素进行比较 例如: char temp; temp = ' '; String end; end = ""; for (int i = 0; i < CharArray.length; i++){ for (int m = 0; m < 2; m++){ if (somethingY){

因此,我有一个名为temp的char变量,当我在2D数组之后的第三个for循环中时,我想将它与存储在X CharArray[X][Y]中的元素进行比较

例如:

char temp;
temp = ' ';
String end;
end = "";
for (int i = 0; i < CharArray.length; i++){
        for (int m = 0; m < 2; m++){
            if (somethingY){
                if (somethingZ){
                    for (int j = 0; j < something.length; j++){
                        //something
                        temp = somethingX;
                        if (temp == String.valueOf(CharArray[i][m]).charAt(0)){
                            end = String.valueOf(CharArray[i][m]);
                            System.out.print(end);
                        }
                    }
                }
            }
        }
    }
我需要输出为:

Z 10
O 11
I 9
J 8
K 10
我不想让人们为我做所有的事情,但似乎我别无选择,因为我在这个问题上浪费了两天时间,我的时间不多了。

使用地图:

ArrayList<String> input=new ArrayList<String>();
input.add("O 2");
input.add("O 2");
Map<String, Integer> map= new HashMap<String, Integer>();
for (String s:input) {
     String[] splitted=s.split(" ");
     String letter=splitted[0];
     Integer number=Integer.parseInt(splitted[1]);
     Integer num=map.get(letter);
     if (num==null) {
         map.put(letter,number);
     }
     else {
         map.put(letter,number+num);
     }
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
     System.out.println(entry.getKey() + " " + Integer.toString(entry.getValue()));
}
不使用地图:

ArrayList<String> input=new ArrayList<String>();
input.add("O 2");
input.add("O 2");
ArrayList<String> letters=new ArrayList<String>();
ArrayList<Integer> numbers=new ArrayList<Integer>();
for (String s:input) {
     String[] splitted=s.split(" ");
     String letter=splitted[0];
     Integer number=Integer.parseInt(splitted[1]);
     int index=-1;
     boolean isthere=false;
     for (String l:letters) {
          index++;
          if (l.equals(letter)) {
              isthere=true; //BUGFIX
              break;
          }
     }
     if (isthere==false) { //BUGFIX
         letters.add(letter);
         numbers.add(number);
     }
     else {
         numbers.set(index,numbers.get(index)+number);
     }      
}
for (int i=0; i < letters.size(); i++) {
     System.out.println(letters.get(i));
     System.out.print(numbers.get(i));
}
将其转换回具有良好输出:

ArrayList<String> output=new ArrayList<String>();
for (int i=0; i < letters.size(); i++) {
    output.add(letters.get(i)+" "+Integer.toString(numbers.get(i));
}

如果您有任何疑问,请随时发表评论。

不清楚。你到底想实现什么?我试图打印end,但我想如果temp==String.valueofcharray[I][m].charAt0是正确的,end的部分也是正确的。看起来你是在比较引用而不是值。temp与String.ValueOfCharray[i][m]不是同一个对象。您需要的字符0。同样,temp的值是0xFE0176129,另一个值是0xFF9002876:对不起,我没听懂,请你澄清一下,也许只是在评论中,你想做什么?输入、预期输出等?我不能使用Map,它对我来说太高级了。但我认为使用.substring可能会奏效,我只是不知道现在该怎么做。@doombingerbg“太高级”是什么意思?就像,以前从未见过它。@doombingerbg为什么你不能使用它?看看代码。地图工作非常简单:键-Value@DoombringerBG:查看我正在模拟地图的编辑。
ArrayList<String> output=new ArrayList<String>();
for (int i=0; i < letters.size(); i++) {
    output.add(letters.get(i)+" "+Integer.toString(numbers.get(i));
}