【问题标题】:Splitting and converting String to int将String拆分并转换为int
【发布时间】:2023-04-03 20:12:01
【问题描述】:

我的代码有问题。我读了几个文本文件。例如: 文本文件.txt

1, 21, 333

使用下面的代码,我想将数字从 String 拆分并转换为 int。

int answer = 0;
int factor = 1;

// Splitting and deleting the "," AND converting String to int.
for (String retval : line.split(",")) {
    for (int j = retval.length() - 1; j >= 0; j--) {
        answer = answer + (retval.charAt(j) - '0') * factor;
        factor *= 1;
    }
    System.out.println(answer);
    answer = (answer - answer);
}

我在控制台 (int) 中得到结果:

1 3 9

我看到数字 3 是 2 + 1 的结果,而数字 9 是 3 + 3 + 3 的结果。 我该怎么做才能在我的控制台 (int) 中收到以下结果?

1 21 333

/EDIT:我只被允许使用 Java.lang 和 Java.IO

【问题讨论】:

  • 你可能想做:factor *= 10 ;)

标签: java string for-loop split type-conversion


【解决方案1】:

这是一个使用 Java 8 流的解决方案:

String line = "1,21,33";
List<Integer> ints = Arrays.stream(line.split(","))
        .map(Integer::parseInt)
        .collect(Collectors.toList());

或者,使用循环,只需使用parseInt

String line = "1,21,33";
for (String s : line.split(",")) {
    System.out.println(Integer.parseInt(s));
}

如果你真的想重新发明轮子,你也可以这样做:

String line = "1,21,33";
for (String s : line.split(",")) {
    char[] chars = s.toCharArray();
    int sum = 0;
    for (int i = 0; i < chars.length; i++) {
        sum += (chars[chars.length - i - 1] - '0') * Math.pow(10, i);
    }
    System.out.println(sum);
}

【讨论】:

    【解决方案2】:

    对于通过搜索来到这里的人,此函数采用分隔值字符串和分隔符字符串,并返回提取值的整数数组。

    int[] parseStringArr( String str, String delim ) {
        String[] strArr = str.trim().split(delim);
        int[] intArr = new int[strArr.length];
        for (int i = 0; i < strArr.length; i++) {
            String num = strArr[i].trim();
            intArr[i] = Integer.parseInt(num);
        }
        return intArr;
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用Integer.valueOf(retval)Integer.parseInt(retval)

      【讨论】:

        【解决方案4】:

        几个问题:

        1. factor 应该在每个循环中乘以 10
        2. answerfactor 应该在您正在解析的数字之间重新初始化:

        String line = "1,21,333";
        for (String retval : line.split(",")) {
            int answer = 0;
            int factor = 1;
            for (int j = retval.length() - 1; j >= 0; j--) {
                answer = answer + (retval.charAt(j) - '0') * factor;
                factor *= 10;
            }
            System.out.println(answer);
            answer = (answer - answer);
        }
        

        输出

        1
        21
        333
        

        【讨论】:

          【解决方案5】:

          好吧,你可以让 answer 成为一个字符串,并在 for 循环之后将其转换为一个整数。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-03-05
            • 1970-01-01
            相关资源
            最近更新 更多