线程" main"中的例外情况java.lang.NumberFormatException:对于输入字符串:" t1"?

时间:2015-12-29 07:29:06

标签: java

我是Java的新手,我在这里遇到了这个问题。我发布链接并记住,这里的其他类似问题对我没有帮助,因为我有不同的代码,因此我在这里创建了这个帐户。

代码:

package secret.package.guys;

import java.util.Scanner;

public class NewClass {
public static void main(String[] args) {

    System.out.println("Number: ");
    Scanner scanner = new Scanner(System.in); 
    String data=scanner.nextLine(); 
    System.out.println(data);


    int a = 0; 

    while(a < 6) {
        System.out.println(a);
        a++; 
        }

    if (a > 6){ 
        System.out.println("SAFE SPACE");


    } else {
        System.out.println("Get in the Safe Space");
        System.out.println("PERSON has entered the Safe Space. Safe Space closes instantly.");
    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
    String s = new String("Old marks: ");
    String t = new String("5.5"); 
    String u = new String("4"); 
    String v = new String("3"); 
    String w = new String("2.5"); 
    String x = new String("6.0"); 
    String y = new String("5.2"); 
    String z = new String("4"); 

    String t1 = t.replaceAll("5.5", "6");
    String u1 = u.replaceAll("4", "4");
    String v1 = v.replaceAll("3", "5");
    String w1 = w.replaceAll("2.5", "3");
    String x1 = x.replaceAll("6.0", "2");
    String y1 = y.replaceAll("5.2", "1.8");
    String z1 = z.replaceAll("4", "4.4");
    System.out.println("New: " + s + " " + t1 + " " + u1 + " " + v1 + " " + w1 + " " 
    + x1 + " " + y1 + " " + z1);
    System.out.println("Enter new marks: ");

    int foo = Integer.parseInt("t1"); 
    int foo1 = Integer.parseInt("u1"); 
    int foo2 = Integer.parseInt("v1"); 
    int foo3 = Integer.parseInt("w1"); 
    int foo4 = Integer.parseInt("x1"); 
    int foo5 = Integer.parseInt("y1"); 
    int foo6 = Integer.parseInt("z1"); 

    System.out.println("foo1 + foo2 + foo3 + foo4 + foo5 + foo6");

}   

}

3 个答案:

答案 0 :(得分:3)

你必须对String变量的值调用parseInt,而不是变量名。

例如,

int foo = Integer.parseInt("t1"); 

应该是

int foo = Integer.parseInt(t1); 

只有当t1包含一个整数的字符串表示时,这才有效(这意味着parseInt(z1)parseInt(y1)仍然会失败,因为那些String不会... t包含整数)。

答案 1 :(得分:2)

请按照以下方式更改您的代码....

int foo = Integer.parseInt(t1); 
int foo1 = Integer.parseInt(u1);
int foo2 = Integer.parseInt(v1); 
int foo3 = Integer.parseInt(w1); 
int foo4 = Integer.parseInt(x1); 
int foo5 = (int)Float.parseFloat(y1); 
int foo6 = (int)Float.parseFloat(z1);  

System.out.println(foo1 + foo2 + foo3 + foo4 + foo5 + foo6);

答案 2 :(得分:1)

您的代码尝试将String解析为数值。

值为“1”会起作用,但由于“t1”不是有效的数值,它将失败,并导致此异常。

我认为你想要的是,而不是:

int foo = Integer.parseInt("t1"); 

将“t1”作为字符串传递

int foo = Integer.parseInt(t1); 

使用引用变量t1。