【问题标题】:Syntax error on string to int java字符串到 int java 的语法错误
【发布时间】:2017-10-22 12:48:49
【问题描述】:

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

【问题讨论】:

  • case 不像你想象的那样工作。
  • 对不起,我是新手,我不太明白它是怎么回事
  • msi 应该是“a”、“b”、“c”、“d”或“e”,是吗?你如何期望Integer.parseInteger(msi) 转换它?

标签: java random input typeconverter


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    来自甲骨文:

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

    请注意,我标记了这一行

    字符串中的字符必须都是十进制数字

    这至少应该已经回答了您收到错误的原因。

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

    在您提供更准确的说明之前,我们无法为您提供更多帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-25
      • 2011-09-15
      • 1970-01-01
      • 2020-01-28
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多