如何在 Java 中的单独变量中从字符串中拆分整数?

How to split integers from a String in seperate variables in Java?

提问人:Noname 提问时间:12/20/2022 最后编辑:nakhodkinNoname 更新时间:12/22/2022 访问量:101

问:

我正在尝试让以下内容发挥作用:

想象一下,通过 scanner 类的输入是这样的:

新 10 32

我想将这些值存储到两个单独的变量中。但我在从字符串到整数的转换中挣扎。有谁知道如何实现这一点,所以在进行评估后,我可以有两个看起来像这样的变量: int width = 10(第一个参数) int height = 32(第二个参数)。 提前感谢您的任何帮助。

以下是我到目前为止实现的内容:

我知道代码相当丑陋,但我无法思考如何让它工作

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        String input = scanner.nextLine();
        String word = "";
        String number1 = "";
        String number2 = "";
        boolean check = false;

        for (int i = 0; i < 5; i++) {
            word += input.charAt(i);
        }

        word.trim();

        if (word.equals("new")) {
            for (int i = 4; i < input.length(); i++) {
                if (Character.isDigit(input.charAt(i)) && !check) {
                    number1 += input.charAt(i);
                } else if (check) {
                    number2 += input.charAt(i);
                }
                if (input.charAt(i) == ' ') {
                    check = true;
                }
            }
        }

        System.out.println(number1 + " " + number2);
    }
}
字符串 java.util.scanner

评论

0赞 nakhodkin 12/22/2022
我注意到,以下语句是 no-op,因为语句的结果不存储在任何地方。word.trim();

答:

0赞 Pranav 12/20/2022 #1
String str = "new 10 32";

// Split the string by space character
String[] parts = str.split(" ");

// Convert the second and third elements of the array to integers
int width = Integer.parseInt(parts[1]);
int height = Integer.parseInt(parts[2]);

这应该有效

1赞 YvesHendseth 12/20/2022 #2

这就是我解决所描述的问题的方法:

String input = scnanner.nextLine();
Integer firstNumber;
Integer secondNumber;
if(input.contains("new")){
  String[] split = input.split(" ");
  // if you can be sure that there are only two numbers then you don't need a loop.
  // In case you want to be able to handle an unknown amount of numbers you need to
  // use a loop.
  firstNumber = split.length >= 2 ? Integer.valueOf(split[1]) : null;
  secondNumber = split.length >= 3 ? Integer.valueOf(split[2]) : null;
}

注意:我没有测试代码,只是从脑海中输入。 希望这能让您了解如何完成这项任务。

评论

0赞 esQmo_ 12/20/2022
然后,您应该将其标记为“已接受”,以便其他人可以找到它