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

时间:2017-05-12 16:58:53

标签: java string for-loop multidimensional-array charat

所以我有一个名为" temp"的char变量我希望与存储在" X"中的元素进行比较。我在{2}阵列之后的第三个CharArray[X][Y]循环中for。{/ p>

例如:

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);
                        }
                    }
                }
            }
        }
    }

我已经尝试过打印&#34; temp&#34;它所说的&#34; temp = somethingX&#34;它打印得很好。但是,当我尝试将String保存到String variable时,它不会打印名为&#34; end&#34;的变量。

根据this,如果对象是其他东西,它就不会做任何事情,但是&#34;结束&#34; 一个String

那么,我做错了什么?

编辑:如果出现混淆,&#34;我试图print&#34;结束&#34;,但我认为temp == String.valueOf(CharArray[i][m]).charAt(0)是否正确,所以应该&#34;结束&#34;的一部分。&#34;。

EDIT2:定义&#34; temp&#34;对于人们......

EDIT3:我试过了#34; end.equals(String.valueOf(CharArray[i][m]));&#34;,但是当我尝试打印它时仍然没有任何反应。我没有任何错误也没有。

EDIT4:我尝试将String.valueOf(CharArray[i][m]).charAt(0)放入另一个名为&#34; temp2&#34;的变量中。做if (temp == temp2),但仍然是一样的。

EDIT5:我尝试temp == CharArray[0][m]然后end = CharArray[0][m],但仍然没有打印。

EDIT6:好的。感觉这永远不会得到解决,我只是说出问题的重点。 - &GT;我有ArrayList,其中每一行都是字母,空格和数字的组合(例如&#34; E 3&#34;)。我需要检查一封信是否重复,如果是,我需要将所有重复字母的数字相加。

例如,如果我有以下ArrayList

Z 3
O 9
I 1
J 7
Z 7
K 2
O 2
I 8
K 8
J 1

我需要输出:

Z 10
O 11
I 9
J 8
K 10

我不希望别人为我做整件事,但似乎我别无选择,因为我已经浪费了2天的时间来解决这个问题并且我已经不在了时间。

1 个答案:

答案 0 :(得分:1)

使用地图:

<li class="{{ Request::segment(1)=='vehicles' ? 'active' : '' }}">
   <a href="/vehicles">Vehicles</a>
</li>

不使用地图:

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));
}

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