【问题标题】:Why is my method not returning an int?为什么我的方法不返回 int?
【发布时间】:2015-01-02 01:42:45
【问题描述】:

我创建了一个方法,它接受一个字符串和一个 int 并返回一个 int。 我想知道为什么它不起作用。 (NumSLHorizo​​ntal 无法解析为变量)下面是相关部分的代码

for (int x = 1; x <= H; x++) {
        System.out.println("Introduza os " + V + " valores das rua " + x);
        String RuaTemp = input.next();
        Confirmador(RuaTemp, V);
        }
    System.out.println(NumSLHorizontal);



    input.close();
}
    public static int Confirmador (String RuaTemp, int V) {
        int NumSLHorizontal = 0;
        for (int z = 0; z < V; z++) {
            char firstLetter = RuaTemp.charAt(z);
            if (firstLetter == '-') {
                NumSLHorizontal++;
            }

        }
        return NumSLHorizontal;

【问题讨论】:

  • 什么不起作用??,实际行为是什么??
  • Eclipse 告诉我:NumSLHorizo​​ntal 无法解析为变量
  • Confirmador(RuaTemp, V);,这里应该得到返回值......
  • -1 用于不识别错误被标记的行。没有这些信息,就很难看到你的错误。在此处提出问题时,始终包含整个错误消息并标识被标记的行。

标签: java methods int return


【解决方案1】:

如果您显示所有代码可能会更好。从我可以从这段代码中了解到,存在范围问题。您正在尝试从该函数外部输出存在于 Confirmador 内部的 NumSLHorizo​​ntal。通常,除非有一个名为 NumSLHorizo​​ntal .if 的全局变量,否则您应该无法编译它所以,它在 Confirmador 中被覆盖。如果我错了,请纠正我。

【讨论】:

    【解决方案2】:

    当你调用一个返回值的方法时,你实际上必须对这个值做一些事情。

    你的方法看起来像:

    public static int Confirmador (String RuaTemp, int V) {
        int NumSLHorizontal = 0;
        for (int z = 0; z < V; z++) {
            char firstLetter = RuaTemp.charAt(z);
            if (firstLetter == '-') {
                NumSLHorizontal++;
            }
    
        }
        return NumSLHorizontal;
    }
    

    您似乎认为return NumSLHorizontal 会将结果放入NumSLHorizontal,然后程序的其余部分将使用该变量名来访问结果。这不是发生的事情。 NumSLHorizontalConfirmador 方法中的局部变量,并且此变量只能在该方法中访问

    正如其他答案所述,为了使用返回值,您必须在调用方法时对该值做一些事情。您可以为其分配另一个变量:

    result = Confirmador(RuaTemp, V);
    

    或者你可以将它传递给另一个方法:

    System.out.println(Confirmador(RuaTemp, V));
    

    或者您可以以任何其他方式在表达式中使用它,您可以使用int

    【讨论】:

      【解决方案3】:

      你需要将返回值赋给一个变量:

      int NumSLHorizontal = 0;
      for (int x = 1; x <= H; x++) {
         ...
         NumSLHorizontal = Confirmador(RuaTemp, V);
      }
      System.out.println(NumSLHorizontal);
      

      (请注意,您的代码的结构方式仅保留并打印出从 last 调用 Confirmador() 获得的值。)

      【讨论】:

        【解决方案4】:
        int result=0;
        for (int x = 1; x <= H; x++) {
            System.out.println("Introduza os " + V + " valores das rua " + x);
            String RuaTemp = input.next();
             result = Confirmador(RuaTemp, V);
        }
        System.out.println(result);
        input.close();
        }
        public static int Confirmador (String RuaTemp, int V) {
           int NumSLHorizontal = 0;
           for (int z = 0; z < V; z++) {
               char firstLetter = RuaTemp.charAt(z);
                if (firstLetter == '-') {
                    NumSLHorizontal++;
                }
           }
           return NumSLHorizontal;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-31
          • 1970-01-01
          • 1970-01-01
          • 2013-03-10
          • 2014-03-31
          • 2015-06-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多