2012-11-05 30 views
1

好的,所以我在编程任务时遇到了很多麻烦。我们将从文本文件中读取信息并使用我们创建的某些方法对其进行格式化。我能够从文本文件的第一行中读取信息,但后缀出现错误。我的代码如下:如何在java中解析多个字符串到int中

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) 
+1

错误告诉你到底你在做什么错:你试图将非数字文本解析为一个数字,而这显然不起作用。解决方案:不要这样做。 –

+1

但除此之外,你想做什么? –

+0

我以为我分开了我的代码中的文本值的数值。这就是while循环是 – user1799156

回答

0

这可是显而易见的,为什么你得到例外:

你想转换“珍妮弗·萨特52114“为一个整数。

解决方法是首先使用try{}catch()块,同时尝试呼叫Integer.parseInt()

我认为什么是你想要得到的字符串的最后一点,并将其转换为整数:既然你使用Scanner你可以在上面nextInt()像这样:

new Scanner(theStringWhichMightHaveANumber).nextInt();

+0

虽然这是怎么发生的?在第一个代码块中,我做的是完全相同的事情,它只将数字转换为整数 – user1799156

+0

@ user1799156我没有必须对其进行测试的完整代码,因此我实际上无法给您一个理由对于这个问题! –