解析一个字符串并将某些元素强制转换为int

时间:2016-01-22 01:31:31

标签: java string casting

我正在编写一些代码,你可以输入2个数字,用逗号分隔,然后继续用数字做其他操作。

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

以下是我正在处理的代码:

+-----------+---------+
|  Product  |  Group  |
+-----------+---------+
| Product 1 | Group 1 |
| Product 1 | Group 2 |
| Product 2 | Group 1 |
| Product 2 | Group 6 |    
| Product 4 | Group 6 | 
+-----------+---------+

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

    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);

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

4 个答案:

答案 0 :(得分:1)

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

您正在寻找的可能是:

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

答案 1 :(得分:0)

失败是因为所有数字都是由用户在同一行上给出的。你有两个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);

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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