【问题标题】:Parse a string and cast certain elements to int解析字符串并将某些元素转换为 int
【发布时间】:2016-04-28 12:17:32
【问题描述】:

我正在编写一段代码,您将输入 2 个数字,用逗号分隔,然后继续对数字执行其他操作。

我想知道如何解析字符串以将第一个数字转换为逗号,将其转换为 int,然后继续将第二个数字转换为 int。

这是我正在处理的代码:

    Scanner Scan = new Scanner(System.in);
    System.out.print("Enter 2 numbers (num1,num2): ");

    //get input
    String input = Scan.nextLine();

    //parse string up to comma, then cast to an integer
    int firstNum = Integer.parseInt(input.substring(0, input.indexOf(',')));

    int secondNum = Integer.parseInt(Scan.nextLine());
    Scan.close();

    System.out.println(firstNum + "\n" + secondNum);

第一个数字转换为整数就好了,我遇到了第二个问题。

Exception in thread "main" java.lang.NumberFormatException: For input string: ""

然后我如何能够从输入字符串中取出第二个整数并将其转换为 Int。

【问题讨论】:

    标签: java string casting


    【解决方案1】:

    您遇到的错误模式确实是合理的,因为您正在从扫描仪读取下一行,因此明确不再对第一个输入进行操作。

    你要找的可能是这样的:

    int secondNum = Integer.parseInt(input.substring(input.indexOf(',') + 1));
    

    【讨论】:

    • 哦,好吧,现在说得通了,我需要重新访问原始输入并在逗号后面取每个。感谢您的帮助。
    【解决方案2】:

    它失败了,因为所有数字都是由用户在同一行给出的。你有两个 Scanner.nextLine();第二个可能是空的。

    这里有一个解决方案:

    Scanner Scan = new Scanner(System.in);
    System.out.print("Enter 2 numbers (num1,num2): ");
    
    //get input
    String input = Scan.nextLine();
    
    StringTokenizer st = new StringTokenizer(input, ",");
    List<Integer> numbers = new ArrayList<>();
    while (st.hasMoreElements()) {
        numbers.add(Integer.parseInt(st.nextElement()));
    }
    
    System.out.println(numbers);
    

    【讨论】:

      【解决方案3】:

      定义 secondNum 时,您将其设置为扫描仪对象读取的下一行的解析整数,但所有数据都已被读取。因此,与其再次从扫描仪中读取数据,不如在逗号后的所有内容上调用 Integer.parseInt。

      【讨论】:

        【解决方案4】:

        如果在一行上输入,两个数字都将存储在String 变量input 中。您无需扫描另一行。它将为空,并且您不能将空字符串转换为int。为什么不像第一个那样从input 中解析出第二个数字。

        【讨论】:

        • 是的,Dolda2000 的回答让我知道,我能够修复我的代码
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多