提示用户输入3个数字,添加2个最高数字(无法调用方法)

时间:2014-10-24 20:58:35

标签: java

我正在尝试提示用户输入3个号码。输入这些数字后,我要添加最高的两个数字。主要方法是处理所有print语句,并调用另一个方法。我不允许使用for循环来解决这个问题。 main中的变量应该传递给另一个方法。

我不知道为什么我无法从主要方法调用该方法。这是我的代码:

public class HW {

    public static void main(String[] args) {

        Scanner console = new  Scanner(System.in);

        System.out.println("Enter three numbers.");

        int x = console.nextInt();
        int y = console.nextInt();
        int z = console.nextInt();

         HW.calLargestSum(); //ERROR
         HW.calLargestSum(int x, int y, int z); //STILL ERROR   
    }

    public int calLargestSum(int x, int y, int z){

        if ( x > y && x > z && y > z )    
          return  x + y;

        else if ( y > x && y > z && x > z )
         return y + x;

      else if ( z > x && z > y && y > x )
         return z + y;

        return 0;

        }
    }

2 个答案:

答案 0 :(得分:0)

问题

从main调用方法时出错。非平凡的错误是你无法从static调用非静态。发生这种情况是因为如果它不是static那么它就是一个实例方法。因此,它需要一个实例来访问它。


静态解决方案

让你的方法保持静态。因此,请将您的方法更改为:

public static int calLargestSum(int x, int y, int z)
{ ... }

要调用该方法,您可以使用:

calLargestSum(1,2,3); 
// or in your case.
calLargestSum(x,y,z); 

实例解决方案

另一种选择是创建一个新的类实例(如果你不想让它使用静态)。像这样:

HW hwObj = new HW();

要打电话请使用:

hwObj.calLargestSum(1,2,3);

查看返回值/打印

 int largest = calLargestSum(x, y, z); 
 System.out.println(largest);

答案 1 :(得分:0)

您无法调用它,因为您尚未实例化HW对象。两种解决方案:

HW hw = new HW();
hw.calLargestSum();

或者让方法保持静态,这样您就不需要实例化它了:

public static int calLargetSum();

进一步......好吧,这么多问题......

HW.calLargestSum(); //ERROR

没有方法calLargestSum(),只有calLargestSum(int x, int y, int z)

HW.calLargestSum(int x, int y, int z); //STILL ERROR 

您需要在此处传递值。 int x不是一个值。您需要传递以下值:

HW.calLargestSum(1, 2, 3);