我必须在我的Java类中使用Scanner
方法进行赋值,以输入整数(项目数),字符串(项目名称)和双精度(项目成本)。我们必须使用Scanner.nextLine()
,然后从那里进行解析。
示例:
System.out.println("Please enter grocery item (# Item COST)");
String input = kb.nextLine();
用户会输入类似:3 Captain Crunch 3.5
输出为:Captain Crunch #3 for $10.5
我遇到的麻烦是从字符串解析int和double,但也保留字符串值。
答案 0 :(得分:3)
例如: 在每次迭代中,查看它是否为整数。下面的示例将第一个元素检查为整数。
string[0].matches("\\d+")
或者您可以使用 try-catch ,如下所示(不推荐)
try{
int anInteger = Integer.parseInt(string[0]);
}catch(NumberFormatException e){
}
答案 1 :(得分:2)
如果我理解了您的问题,您可以使用String.indexOf(int)
和String.lastIndexOf(int)
String input = "3 Captain Crunch 3.5";
int fi = input.indexOf(' ');
int li = input.lastIndexOf(' ');
int itemNumber = Integer.parseInt(input.substring(0, fi));
double price = Double.parseDouble(input.substring(li + 1));
System.out.printf("%s #%d for $%.2f%n", input.substring(fi + 1, li),
itemNumber, itemNumber * price);
输出
Captain Crunch #3 for $10.50
答案 2 :(得分:0)
Scanner sc = new Scanner(System.in);
String message = sc.nextLine();//take the message from the command line
String temp [] = message.split(" ");// assign to a temp array value
int number = Integer.parseInt(temp[0]);// take the first value from the message
String name = temp[1]; // second one is name.
Double price = Double.parseDouble(temp[2]); // third one is price
System.out.println(name + " #" + number + " for $ " + number*price ) ;