java - String.valueOf(Integer) 始终返回 1

标签 java string integer

我正在尝试解析字符串“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/

相关文章:

Java游戏循环: Frame Jumps

java - 创建外键的语法错误

python - 匹配两个通配字符串的优雅方式

c++ - 用一些字符串替换字符串中的字符

JavaScript var = int ||整数?

MySQL、XML bool 值和整数 : Incorrect integer value:

java - 为什么 Integer 在 Java 中不代表 NaN?

java - 如何高效管理数百个实体?

java - 如何将 RSSReader 组件与代号一中的 URL 链接

c# - LinqToDB 如何将枚举存储为字符串值?