从Java中的String中解析int,double和String

时间:2014-10-25 17:01:40

标签: java

我必须在我的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,但也保留字符串值。

3 个答案:

答案 0 :(得分:3)

  1. 首先,拆分字符串并获取数组。
  2. 循环播放数组。
  3. 然后,您可以尝试将数组中的字符串解析为各自的类型。
  4. 例如: 在每次迭代中,查看它是否为整数。下面的示例将第一个元素检查为整数。

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