我正在编写一些代码,你可以输入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。
答案 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
中的第二个数字。