为什么我的方法不能看到传递给它们的参数?

时间:2012-10-22 01:59:02

标签: java

我一直在做Java作业。以下是我的指示:

  

接口编程分配

     

创建一个名为ISum的接口。接口应该定义2个方法。第一种方法应该将两个整数作为参数并返回它们的总和。第二种方法应该使用2个字符串作为参数并返回它们的串联。第二种方法应该是第一种方法的重载版本。

     

定义另一个名为IAverage的接口。接口应该定义一个方法,它接受2个整数参数并返回平均值。

     

创建一个名为Calculator的类,它实现上面定义的接口。你的班级必须实现异常处理。创建一个允许用户调用类中每个方法的驱动程序类。

到目前为止我的工作:

Main上课:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Calculator calculatorObject = new Calculator();
        Scanner scannerObject = new Scanner(System.in);

        System.out.println("Enter 1 for integer or 2 for string");
        int test1 = scannerObject.nextInt();

        switch (test1){
            case 1: 
                System.out.println("Enter 1st number");
                int int1 = scannerObject.nextInt();

                System.out.println("Enter 2nd number");
                int int2 = scannerObject.nextInt();   

                System.out.println("Enter 1 for sum or 2 for average");
                int test2 = scannerObject.nextInt(); 

                switch (test2){
                    case 1: 
                        int sum = calculatorObject.intSum(int1,int2);
                        System.out.println("The sum is " + sum);
                        break;

                    case 2:
                        int avg = calculatorObject.intAvg(int1,int2);
                        System.out.println("The avg is " + avg);
                        break;

                    default:
                        System.out.println("You entered an invalid option");    
                        break;    
                }

                break; 

            case 2: 
                System.out.println("Enter 1st string");
                String string1 = scannerObject.nextLine();

                System.out.println("Enter 2nd number");
                String string2 = scannerObject.nextLine();   

                String stringConcat = calculatorObject.stringSum(string1,string2);
                System.out.println("The sum is " + stringConcat);
                break; 

            default:
                System.out.println("You entered an invalid option");    
                break;
        }
    }
} 

ISum界面:

public interface ISum {

    public void intSum();
    public void intAvg();

}

IAverage界面:

public interface IAverage {

    public void intAvg();

}

Calculate上课:

abstract class Calculator implements IAverage, ISum { 

    public int intSum (int1,int2){
        int int1;
        int int2;
        int sum = int1 + int2;
        return sum;
    }

    public String stringSum (string1,string2){
        String string1;
        String string2;
        String stringConcat = string1.concat(string2);
        return stringConcat;
    }

    public int intAvg(int1,int2){
        int int1;
        int int2;
        int avg = (int1 + int2)/2;
        return avg;
    }

}

3 个答案:

答案 0 :(得分:2)

乍一看,您的方法似乎看不到参数,因为ISum 中的方法没有参数。

试试这个,你应该在路上:

public interface ISum {

    public int intSum(int first, int second);
    public int intAvg(String first, String second);

}

答案 1 :(得分:1)

您的说明指出了创建2个重载方法。

public interface ISum {

public void sum(int a,int b);  
public void sum(String s1,String s2);

}

方法名称必须相同。
返回类型可以更改为int和String。

答案 2 :(得分:0)

在使用参数变量之前重新声明并重新初始化它们,因此在您触摸它们时它们是空白的。

例如:

public int intSum (int1,int2){

    int int1;
    int int2;

    int sum = int1 + int2;

    return sum;


}

在第一行中,public int intSum(int1,int2){,即你将int1和int2声明为方法局部变量。你不需要再做int int1;或int int2;。通过包含这些行,您可以用任何内容覆盖它们。对于上述方法,您只需要:

public int intSum (int1,int2){

    int sum = int1 + int2;

    return sum;


}

编辑:derp,读取失败。你还应该给参数一个类型,所以

public int intSum (int int1, int int2){

    int sum = int1 + int2;

    return sum;


}