应该在java@1.5中将字符串转换为Int还是使用其他方法?

应该在java@1.5中将字符串转换为Int还是使用其他方法?,java,Java,我正在编写一个程序,我想通过按任意键(字符或数字)来终止程序,因此我使用Integer.parseInt(variable)方法将字符串转换为int,并比较选项如果不是所需的选项,它应该终止程序,但在线程“main”中显示错误异常java.lang.NumberFormatException:对于输入字符串:“d” 程序代码如下:- public class mainClass { public static void main( String[] ar ) { doub

我正在编写一个程序,我想通过按任意键(字符或数字)来终止程序,因此我使用Integer.parseInt(variable)方法将字符串转换为int,并比较选项如果不是所需的选项,它应该终止程序,但在线程“main”中显示错误异常java.lang.NumberFormatException:对于输入字符串:“d”

程序代码如下:-

public class mainClass {
    public static void main( String[] ar ) {
        double res = 0;
        Scanner in = new Scanner( System.in );
        Tdata td1 = new Tdata(); // another class object

        System.out.println( "****Temperature Conversion****" );
        System.out.println( "------------------------------" );
        System.out.println( "Press 1-> C2F" );
        System.out.println( "Press 2-> F2C" );
        System.out.println( "<- Press aNY kEY TO Exit ->" );

        String choice = in.nextLine();

        // =======================================================
        int ch = Integer.parseInt( choice );
        System.out.println( "String has converted: " + ch ); 
        // verifying if converted into int
        if( ch == 1 || ch == 2 ) {
            if( ch == 1 ) {
                td1.getVal( 37.4 );
                res = td1.C2F();
                System.out.println( "Resulted Temperature: " + res );
            }
            else if( ch == 2 ) {
                td1.getVal( 104.2 );
                res = td1.F2C();
                System.out.println( "Resulted Temperature: " + res );
            }
            else {
                System.out.println( "mind your input plz" );
            }
        }
        else {

            System.out.println( "<- You select to exit ->" );
            System.exit( 0 );
        }
        // =======================================================
    }// end of main
}// end of public class
public类mainClass{
公共静态void main(字符串[]ar){
双res=0;
扫描仪输入=新扫描仪(System.in);
Tdata td1=新Tdata();//另一个类对象
System.out.println(“****温度转换****”);
System.out.println(“-----------------------------------”);
System.out.println(“按1->C2F”);
System.out.println(“按2->F2C”);
System.out.println(“”);
String choice=in.nextLine();
// =======================================================
int ch=Integer.parseInt(选项);
System.out.println(“字符串已转换:”+ch);
//验证是否转换为int
如果(ch==1 | | ch==2){
如果(ch==1){
td1.getVal(37.4);
res=td1.C2F();
System.out.println(“结果温度:+res”);
}
否则如果(ch==2){
td1.getVal(104.2);
res=td1.F2C();
System.out.println(“结果温度:+res”);
}
否则{
System.out.println(“注意输入plz”);
}
}
否则{
System.out.println(“”);
系统出口(0);
}
// =======================================================
}//干管末端
}//公共课结束
现在我认为我应该将不需要的输入转换为它以前的状态,即字符串状态。。这是正确的方法还是应该尝试api中提供的另一种预定义方法

-谢谢!
Niks比较字符,而不是将其转换为整数:

if (choise.isEmpty()) {
    //user pressed Enter
} else if (choise.charAt (0) == '1') {
    //user pressed 1
} else if (choise.charAt (0) == '2') {
    //user pressed 2
} else {
    //user pressed another key(s). exit here
}

由于您已经在使用
扫描仪
,因此您最好使用
hasNextInt()
nextInt()
而不是执行
Integer.parseInt()

尝试以下代码段:输入数字、非数字等。完成后输入0

    Scanner sc = new Scanner(System.in);
    do {
        System.out.println("Enter code: ");
        while (!sc.hasNextInt()) {
            System.out.println("int, please!");
            sc.next();
        }
        int num = sc.nextInt();
        if (num == 0) break;
        System.out.println("Got " + num);
    } while (true);
    System.out.println("DONE!");

if(choise.isEmpty(){
-看起来您忘记了结束条件的括号。另外,它是“选择”--拼写和OP的变量名。谢谢!添加了右括号。关于choice vs choise:我不是母语人士,我的字典能识别这两个词并给出相同的翻译。正确的词是什么?你的字典必须是lerping这个词,choise是正确的,choise不存在。新代码会出错,我只是更改了erroneous代码和新代码。它说:-
mainClass.java:43:找不到symbol
symbol:method isEmpty()
位置:class java.lang.String if(choice.isEmpty())
^(我没有太多经验,但由于最近的几个错误,我知道这1发生在父类中没有定义方法/子类时。)然而,我已经注释掉了受感染的代码(if block),而不是程序得到了执行我真的不能让我的回答像你的那样易读;非常感谢编辑了我上述问题描述的人,我猜是tangens:)非常感谢