“线程中的异常”;“主要”;java.lang.NumberFormatException:对于输入字符串:";t1";?

“线程中的异常”;“主要”;java.lang.NumberFormatException:对于输入字符串:";t1";?,java,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 =

我是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");

}   
package secret.package.guys;
导入java.util.Scanner;
公共类新类{
公共静态void main(字符串[]args){
System.out.println(“编号:”);
扫描仪=新的扫描仪(System.in);
字符串数据=scanner.nextLine();
系统输出打印项次(数据);
int a=0;
while(a<6){
系统输出打印项次(a);
a++;
}
如果(a>6){
System.out.println(“安全空间”);
}否则{
System.out.println(“进入安全空间”);
System.out.println(“人员已进入安全空间。安全空间立即关闭”);
}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
字符串s=新字符串(“旧标记:”);
字符串t=新字符串(“5.5”);
字符串u=新字符串(“4”);
字符串v=新字符串(“3”);
字符串w=新字符串(“2.5”);
字符串x=新字符串(“6.0”);
字符串y=新字符串(“5.2”);
字符串z=新字符串(“4”);
字符串t1=t.replaceAll(“5.5”、“6”);
字符串u1=u.replaceAll(“4”,“4”);
字符串v1=v.replaceAll(“3”、“5”);
字符串w1=w.replaceAll(“2.5”、“3”);
字符串x1=x.replaceAll(“6.0”,“2”);
字符串y1=y.replaceAll(“5.2”、“1.8”);
字符串z1=z.replaceAll(“4”、“4.4”);
System.out.println(“新的:“+s+”+t1+“+u1+”+v1+“+w1+””
+x1+“”+y1+“”+z1);
System.out.println(“输入新标记:”);
intfoo=Integer.parseInt(“t1”);
intfoo1=Integer.parseInt(“u1”);
intfoo2=Integer.parseInt(“v1”);
intfoo3=整数.parseInt(“w1”);
intfoo4=Integer.parseInt(“x1”);
int foo5=Integer.parseInt(“y1”);
intfoo6=Integer.parseInt(“z1”);
System.out.println(“foo1+foo2+foo3+foo4+foo5+foo6”);
}   

}

必须对字符串变量的值而不是变量名调用
parseInt

比如说,

int foo = Integer.parseInt("t1"); 
应该是

int foo = Integer.parseInt(t1); 

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

您的代码尝试将字符串解析为数值

如果值为“1”,它将工作,但由于“t1”不是有效的数值,它将失败,并导致此异常

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

int foo = Integer.parseInt("t1"); 
将“t1”作为字符串传递

int foo = Integer.parseInt(t1); 

使用参考变量t1。

请按如下方式更改代码

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

例外情况是,您正在尝试将
“t1”
字符串转换为整数,这是不可能的,因为如果使用int,则t1不是任何表示形式。相反,您必须解析变量
t1
。您应该知道,replaceAll将正则表达式作为第一个参数。您的代码`stringt1=t.replaceAll(“5.5”、“6”);`将555和575替换为6。谢谢您的回答。现在我觉得犯了这样的错误很愚蠢。现在我得到了以下错误行:线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“1.8”将其解析为双精度,而不是整数。它是一个带小数的数字,所以不能是整数。所以我应该写:int foo Integer.parsedouble(t1)?不,Double.parseDouble(t1);(如果t1是一个有十进制值的,如果它没有十进制值,Integer.parseInt会这样做)那么,如果他这样做:下一个抛出的异常是什么?我不明白你在想什么。我已经回答了一个答案,如果他这样做,这就是结果:现在我在线程“main”中得到这个错误行:异常java.lang.NumberFormatException:对于输入字符串:“1.8”Ok。。“1.8”为float.int foo5=(int)float.parseFloat(y1)时发生异常;intfoo6=(int)Float.parseFloat(z1);