繁体   English   中英

如何在Java中将多个字符串解析为int

[英]How to parse more than one string into an int in java

好的,所以我在编程任务上遇到很多麻烦。 我们将从文本文件中读取信息,并使用我们创建的某些方法对其进行格式化。 我能够从文本文件的第一行中读取信息很好,但是后记却出错。 我的代码如下:

String name1 = scan.nextLine();
    String name2 = scan.nextLine();
    scan.close();
    int length = name1.length();
    int count = 0;
    int a = 0;
    int b = 1;
    while(end != true)
    {

        String check = name1.substring(a,b);
        a++;
        b++;
        count++;
        char z = check.charAt(0);
        if(z == '0' || z == '1' || z == '2' || z == '3' || z == '4' || z == '5' || z == '6' || z == '7' || z == '8' || z == '9')
        {
            end = true;

        }
        if(count == length)
        {
            end = true;

        }
    }
    String number1 = name1.substring(count,length);
    int number01 = Integer.parseInt(number1);
    name1=name1.substring(0, count-1);
    int d = name1.indexOf(" ");
    int length1 = name1.length();
    String name1first = name1.substring(0,d);
    name1first = name1first.trim();
    String name1last = name1.substring(d,length1);
    name1last = name1last.trim();

    System.out.println(name1first);
    System.out.println(name1last);
    System.out.println(number01);


    length = name2.length();
   int  countt = 0;
int  aa = 0;
int  bb = 1;
    while(end != true)
    {

        String check = name2.substring(aa,bb);
        aa++;
        bb++;
        countt++;
        char z = check.charAt(0);
        if(z == '0' || z == '1' || z == '2' || z == '3' || z == '4' || z == '5' || z == '6' || z == '7' || z == '8' || z == '9')
        {
            end = true;

        }
        if(countt == length)
        {
            end = true;

        }
    }
    String number2 = name2.substring(countt,length);
    int number02 = Integer.parseInt(number2);
    name2=name2.substring(0, countt-1);
    d = name2.indexOf(" ");
    int length2 = name2.length();
    String name2first = name2.substring(0,d);
    name2first = name2first.trim();
    String name2last = name2.substring(d,length2);
    name2last = name2last.trim();

    System.out.println(name2first);
    System.out.println(name2last);
    System.out.println(number02);

我得到这个错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "Jennifer Sutter 52114"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Salary.main(Salary.java:101)

那是显而易见的原因:

您正在尝试将“ Jennifer Sutter 52114”转换为整数。

解决方案是在尝试调用Integer.parseInt()首先使用try{}catch()块。

我认为您正在尝试获取字符串的最后一部分并将其转换为整数:并且由于您正在使用Scanner ,因此可以像下面这样对nextInt()进行操作:

new Scanner(theStringWhichMightHaveANumber).nextInt();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM