我正在尝试解析字符串“2 2 2”并在 ArrayList 中添加每个符号“2”。 这是我的代码:
charCounter = 0;
rawSize = 0;
while(charCounter < line.length()){
a_char = line.charAt(charCounter);
if(a_char != ' '){
System.out.print(String.valueOf(a_char)+" ");
temp = Character.digit(a_char, 10);
myIntArray.add(temp);
System.out.println(String.valueOf(myIntArray.get(rawSize)));
rawSize++;
}
charCounter++;
}
我不明白为什么System.out.println(String.valueOf(myIntArray.get(rawSize)));
总是返回1?
更新:
我尝试读取文件,其中包含下一个文本:
1 1 1
2 2 2
3 3 3
这是我的主要功能:
public static void main(String[] args){
char a_char = ' ';
int charCounter = 0;
int temp = 0;
String line = null;
String file = "C:\\Users\\KUser\\Desktop\\SImpleIteration\\matrix.txt";
BufferedReader reader = null;
ArrayList myIntArray = new ArrayList();
try {
reader = new BufferedReader(new FileReader(file));
} catch(FileNotFoundException fnfe) {
System.out.println(fnfe.getMessage());
}
try {
while ((line = reader.readLine()) != null) {
charCounter = 0;
rawSize = 0;
while(charCounter < line.length()){
a_char = line.charAt(charCounter);
if(a_char != ' '){
System.out.print(String.valueOf(a_char)+" ");
temp = Character.digit(a_char, 10);
myIntArray.add(temp);
System.out.println(String.valueOf(myIntArray.get(rawSize)));
rawSize++;
}
charCounter++;
}
}
} catch(IOException ioe) {
System.out.println(ioe.getMessage());
}
};
我的输出:
1 1
1 1
1 1
2 1
2 1
2 1
3 1
3 1
3 1
当我将:a_char = line.charAt(charCounter);
替换为 a_char = '5';
时,
我的输出:
5 5
5 5
5 5
5 5
5 5
5 5
5 5
5 5
5 5
不明白为什么会这样。
最佳答案
我刚刚重写了您的代码以便能够编译它,并且它可以正常工作:
String line = "2 2 2";
ArrayList myIntArray = new ArrayList();
int charCounter = 0;
int rawSize = 0;
while(charCounter < line.length()){
char a_char = line.charAt(charCounter);
if(a_char != ' '){
System.out.print(String.valueOf(a_char)+" ");
int temp = Character.digit(a_char, 10);
myIntArray.add(temp);
System.out.println(String.valueOf(myIntArray.get(rawSize)));
rawSize++;
}
charCounter++;
}
输出:
2 2
2 2
2 2
更新:
我已经根据您的更新编辑了我的代码。再说一遍,它工作正常,但 String.valueOf(...)
确实总是返回 1。这是因为在外部 while
中,您将 rawSize 分配为零,因此您将始终打印 myIntArray
的前三个元素,即“1”。尝试打印整个 myIntArray
,您将看到它已按您的预期填充。
附注确实有很多更简洁、更好的方法来实现这一点,例如,正如另一位响应者所建议的那样。
关于java - String.valueOf(Integer) 始终返回 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25705478/