Java 将2D CharArray转换为字符串并使用.charAt()比较字符是否正确?
因此,我有一个名为temp的char变量,当我在2D数组之后的第三个for循环中时,我想将它与存储在X CharArray[X][Y]中的元素进行比较 例如: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){
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));
}