【问题标题】:Is it possible to use a String if statement to change an integer? [closed]是否可以使用 String if 语句来更改整数? [关闭]
【发布时间】:2021-10-22 04:35:46
【问题描述】:

我只是在练习一些 java 编码,想知道是否有办法使用 String if else 语句来更改整数,因为以下不喜欢 c = a * b

    int a, b, c;

    Scanner sc = new Scanner(System.in);
    System.out.println("Enter first number");
    a = sc.nextInt();
    System.out.println("Enter * + - or / ");
    String d = sc.nextLine();
    System.out.println("Enter second number");
    b = sc.nextInt();
    
    if (d.equals("*")){
        c = a * b;
            
    }
    System.out.println(a + " " + d + " b " + " = " + c);
    
    

【问题讨论】:

  • 这能回答你的问题吗? Variable might not have been initialized error
  • 在输入if 语句之前,d 是什么?在if 之前添加类似System.out.println(d) 的调试打印,并使用其输出更新您的问题。另外:在 if 块内添加调试打印,以便在输入 if 块时在控制台上得到通知。
  • “以下不喜欢”是什么意思?我从未见过这样的错误信息。我强烈建议您在收到错误时添加真正的错误消息,或者如果结果不是您所期望的,则添加带有预期值和实际值的示例。

标签: java string if-statement


【解决方案1】:

发生这种情况是因为变量“c”仅在条件 if (d.equals("*")) {...} 为真时才被初始化,要解决此问题,您有两种选择:

只需初始化“c”:

        int a, b, c = 0;

或添加else语句

        if (d.equals("*")){
            c = a * b;
        }else {
            c = 0;
        }

【讨论】:

  • ?️ 这里的重要建议:else 分支使每个 if 语句完整(因此不易出错),因为每个路径都被覆盖了。
  • java 编译器检查所​​有可能的路径以查看局部变量是否已初始化。在您的代码中,只有 c 被初始化的地方是 if 语句。它没有找到任何其他初始化 c 的路径。因此它会生成编译时错误
猜你喜欢
  • 1970-01-01
  • 2022-07-20
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 2014-08-19
  • 2015-08-17
  • 2012-10-10
  • 1970-01-01
相关资源
最近更新 更多