字符串到int java的语法错误

时间:2017-10-22 12:48:49

标签: java random input typeconverter

我是Java的新手,我在这里感到困惑。当我想在java中将字符串转换为int时,为什么会出现错误?

如果我输入msi(a到e),我想在if语句中使用msii变量到外面,我不能,所以我尝试在外面使用sout。但是我得到了一个错误。

    public static void main(String args[]){
    Scanner i=new Scanner (System.in);
    System.out.println("Name\t\t\t");
    String nama=i.nextLine();
    System.out.println("Nim\t\t\t");
    String nim=i.nextLine();
    System.out.println("grade\t\t");
    String msi=i.next();
    switch(msi) {
        case "a||A":
            {
                msii=Integer.parseInt(msi);
                msii=4;
                break;
            }
        case "b||B":
            {
                 msii=Integer.parseInt(msi);
                msii=3;
                break;
            }
        case "c||C":
            {
                msii=Integer.parseInt(msi);
                msii=2;
                break;
            }
        case "d||D":
            {
                msii=Integer.parseInt(msi);
                msii=1;
                break;
            }
        case "e||E":
            {
                msii=Integer.parseInt(msi);
                msii=4;
                break;
            }
        default:
            System.out.println("tidak ada");
            break;
    }

    System.out.println(+msii);

2 个答案:

答案 0 :(得分:0)

您没有为msii声明数据类型 必须全局声明为int msiiint msii=Integer.parseInt(msi);

答案 1 :(得分:0)

由于您未包含任何Exception的堆栈跟踪,我将假设您获得NumberFormatException

来自oracle:

  

public static int parseInt(String s)                       抛出NumberFormatException   将字符串参数解析为带符号的十进制整数。 字符串中的字符必须全部为十进制数字,但第一个字符可能是ASCII减号' - ' (' \ u002D')表示负值或ASCII加号' +' (' \ u002B')表示正值。返回结果整数值,就像将参数和基数10作为parseInt(java.lang.String,int)方法的参数给出一样。   参数:   s - 包含要解析的int表示的String   返回:   十进制参数表示的整数值。   抛出:   NumberFormatException - 如果字符串不包含可解析的整数。

请注意,我标记了

  

字符串中的字符必须全部为十进制数字

至少应该回答为什么会出错。

您正在尝试解析非十进制字符

除非您提供有关您正在尝试做的更准确的描述,否则我们无法为您提供更多帮助。