【问题标题】:Calling a "non-void" method from another Java class从另一个 Java 类调用“非 void”方法
【发布时间】:2013-09-25 19:46:04
【问题描述】:

这是我试图调用的方法:

public static int seu03Menu(int option)
{
Scanner console = new Scanner(System.in);
System.out.println("*************************************************************");
System.out.println("Welcome to the 1323 System \nPlease choose an option from our menu\n");
System.out.println("1. Calculator");
System.out.println("2. Sentence Analysis");
System.out.println("3. Roll Dice");
System.out.println("4. Big Money");
System.out.println("\n9. Exit");
System.out.println("Option:");
option = console.nextInt();
return option;
}

这就是我尝试调用该方法的方式:

public static void main (String[] args)
{
seu03Methods.seu03Menu(int option);
switch (option)
{
case 1:
    seu02.calculator();
    break;
case 2:
    seu03Methods.sentenceAnalysis();
    break;
case 3:
    seu03Methods.rollDice();
    break;
case 4:
    seu03Methods.bigMoney();
    break;
case 9:
    System.out.println("Exiting seu03...");
    break;
default:
    System.out.println("Invalid selection.");
    break;
}

我们还没有介绍如何调用不仅仅是“public static void”的方法,所以我完全迷失了。我是 Java 新手,因此尝试使用 Google 和 Stack Overflow 搜索它无济于事。任何指向正确方向的指针都非常感谢!

【问题讨论】:

  • 这两个函数是同一个类吗?

标签: java class methods


【解决方案1】:
int option = seu03Methods.seu03Menu (0);

seu03Menu 不应带参数。在 Java 中,参数是传递给 方法的值;唯一通过方法out 传递给调用者的值是返回值。 seu03Menu 不使用传递给它的 option 的值。因此,它不应该带参数,而是应该看起来像

public static int seu03Menu()
{
... other stuff
int option = console.nextInt();
return option;
}

那么你可以这样称呼它:

int option = seu03Methods.seu03Menu ();

如果seu03Menu 不是您可以更改的,那么您必须将一些整数作为参数传递给它。但是由于seu03Menu 不使用您传递的值,您可以随意设置它,例如0

【讨论】:

  • 好的,好东西。现在我只需要完成关于开关的自学,就可以让它正常工作,我们都会好起来的。我的教授非常热情,但很少涵盖我们需要的所有材料:P 谢谢!
【解决方案2】:

您调用的方法返回int

您需要在代码中初始化对方法值的引用,以便获取方法的值。

您也不需要在方法的签名中添加参数,因为它会根据System 输入流 (System.in) 中的扫描结果生成结果。

你可以这样做:

  • 将方法签名改为无参数:public static int seu03Menu()
  • 在方法体中,将option = console.nextInt(); 更改为return console.nextInt();
  • 这样调用你的方法:int theResult = seu03Methods.seu03Menu();

您的方法将从System.in 流中获取int 类型的值,然后将其返回。 您的 theResult 方法范围变量将保存该值。

另外,我强烈推荐:

  • 检查方法主体中的异常(如果您在查询后键入非整数值会发生什么情况?自己尝试)
  • 使用 Java 约定(类名 CamelCase)

【讨论】:

    【解决方案3】:
    public static int seu03Menu(){
        Scanner console = new Scanner(System.in);
    
        //All your options
    
        int option = console.nextInt();
        return option;
    }
    
    public static void main (String[] args){
      int option = seu03Methods.seu03Menu();
       switch( option ){
         //rest of your code
       }
    }
    

    【讨论】:

      【解决方案4】:

      进行如下更改: 主线换行 seu03Methods.seu03Menu(int option);

      int option=seu03Methods.seu03Menu;

      和 改变方法的定义 public static int seu03Menu(int option) to public static int seu03Menu()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多