【问题标题】:Reading two lines of input and then splitting读取两行输入然后拆分
【发布时间】:2016-05-21 11:45:48
【问题描述】:

我正在处理一项任务,我需要从控制台读取 2 行单独的行,将其存储在单个变量中,然后才能拆分它。

示例输入:

'5'
'名字'

输入的第一行需要转换为整数,第二行需要转换为字符串。所以你最终会得到:
5 - 整数
“名字” - 字符串

我尝试过使用String.split() 方法,但我不确定如何用换行符分割。

【问题讨论】:

  • 最好的办法就是去写一些代码。
  • 如果你是按行分割,如果输入实际上包含换行符,则使用identifier.split("\n");
  • 我已经编写了整个程序。因为我是初学者,所以我坚持这一点。我实际上编写了两个单独的变量来获取输入。

标签: java string java.util.scanner


【解决方案1】:

这个问题的答案很简单。

Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
    int line1 = 0;

    while (true) {
        String input = scanner.nextLine();
        if (input.length > 0) {
            try {
                line1 = Integer.parseInt(input);
                break;
            } catch (NumberFormatException e) {
                System.out.println("Input not an integer, try again.");
            }
        } else {
            // User entered nothing. Break loop to stop it from never ending.
            break;
        }
    }
    String line2 = Scanner.nextLine();
}

这将从扫描仪存储一个整数,并强制确保它是一个整数,然后存储一个字符串。如果你没有正确输入一个整数,它会要求另一个。

如果您以后需要为每个空格拆分字符串,请使用:

String[] array = line2.split(" ");

您不能拆分整数。

如果需要将两个输入组合成一个字符串,那么您可以使用:

String completeString = line1 + " " + line2;

同样,您可以使用以下方法拆分:

String[] array = completeString.split(" ");

所以如果用户输入 55 和“你好”,拆分后你会得到以下结果:

["55", "Hello"]

【讨论】:

    【解决方案2】:
    Scanenr scan = new Scanner(System.in);
    String input = scan.nextLine();
    String[] th = input.split(" ");
    
    //After splitting
    int a = Integer.parseInt(th[0]);  //5
    String b = th[1]; //FirstName
    

    【讨论】:

    • 你会得到一个错误。您不能自动从 String 转换为 int。
    • @frayment 抱歉,打错了伙计!
    • 您是否进行了任何类型检查以确保正确解析整数?看我的回答。 ;)
    • 参考@frayment - 你需要使用try catch 子句!
    • @frayment 我没有告诉你,@playstone 询问如何验证东西,所以我告诉他参考你的答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多