0

编写一个名为 Average 的类,可用于计算多个整数的平均值。它应该包含以下方法:

 一种接受两个整数参数并返回其平均值的方法。 一种接受三个整数参数并返回其平均值的方法。 一种接受两个表示范围的整数参数的方法。如果第二个参数小于第一个参数,则发出错误消息并返回零。否则,该方法应返回该范围(包括)内整数的平均值。

我对 Java 和编程完全陌生,这让我完全迷失了!这是我尝试过的。

导入 java.util.Scanner;

public class Average {

    public static void main(String[] args) {

    double numb1, numb2, numb3;
    System.out.println("Enter two numbers you'd like to be averaged.");
    Scanner keyboard = new Scanner(System.in);
    numb1 = keyboard.nextInt();
    numb2 = keyboard.nextInt();

    }

        public double average (int num1, int num2) {

            return (num1 + num2) / 2.0; 
    } 

        public double average (int num1, int num2, int num3) 
        { 
         return (num1 + num2 + num3) / 3.0; 
        } 

}

该程序不会过去从用户那里获取值。请帮忙!

4

9 回答 9

5

您必须实际调用您的方法。

只需放置

Average avg = new Average();
System.out.println("The average is: " + avg.average(numb1, numb2));

在你的main方法结束时。

或者,您可以将方法设为静态:

public static double average (int num1, int num2) {
    return (num1 + num2) / 2.0; 
} 

有关构造函数static.

于 2013-10-22T00:36:43.997 回答
1

让我们详细说明你在那里做了什么。

public static void main(String[] args) {   
//Create variables numb1, numb2 & numb3
double numb1, numb2, numb3;
System.out.println("Enter two numbers you'd like to be averaged.");
//Read standard input (keyboard)
Scanner keyboard = new Scanner(System.in);
//Retrieve first input as an int
numb1 = keyboard.nextInt();
//Retrieve second input as an int
numb2 = keyboard.nextInt();
}

然后你的两个 next 方法计算两个或三个给定整数的平均值。main 方法是程序执行期间调用的第一个方法。jvm 将执行里面的所有内容。所以它将声明三个双打,从键盘读取两个值然后结束。

如果您想使用您的方法计算 numb1 和 numb2 的平均值,您必须创建一个对象 Average 并像这样调用您的 average 方法

public static void main(String[] args) {   
//Create variables numb1, numb2 & numb3
double numb1, numb2, numb3;
System.out.println("Enter two numbers you'd like to be averaged.");
//Read standard input (keyboard)
Scanner keyboard = new Scanner(System.in);
//Retrieve first input as an int
numb1 = keyboard.nextInt();
//Retrieve second input as an int
numb2 = keyboard.nextInt();
//Declare the average value
double average;
//Create an average instance of the class average
Average averageObject = new Average();
//Call your average method
average = averageObject.average(numb1,numb2);
//Print the result
System.out.println("Average is : " + average);
}

Java 中的一切都是对象(阅读面向对象编程)。编写“平均”类定义了对象的结构。它具有属性(特征)和方法(动作)。您的 Average 对象没有属性。然而,它有两种作用于整数的方法(平均两个和三个数字)。但是,您的类只是对象的骨架。您需要使用关键字 new as 从这个骨架创建一个对象:

Average averageObject = new Average();

真挚地

于 2013-10-22T00:44:50.960 回答
1

看起来您实际上并没有打印出结果。试试下面的。

    System.out.print(average(numb1, numb2));                                            
于 2013-10-22T00:41:01.757 回答
1
public class Marks {
    int roll_no;
    int subject1;
    int subject2;
    int subject3;

    public int getRoll_no() {
        return roll_no;
    }

    public void setRoll_no(int roll_no) {
        this.roll_no = roll_no;
    }

    public int getSubject1() {
        return subject1;
    }

    public void setSubject1(int subject1) {
        this.subject1 = subject1;
    }

    public int getSubject2() {
        return subject2;
    }

    public void setSubject2(int subject2) {
        this.subject2 = subject2;
    }

    public int getSubject3() {
        return subject3;
    }

    public void setSubject3(int subject3) {
        this.subject3 = subject3;
    }
    public void getDetails(){
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the marks of subject1");
        this.subject1 = sc.nextInt();
        System.out.println("Enter the marks of subject2");
        this.subject2 = sc.nextInt();
        System.out.println("Enter the marks of subject3");
        this.subject3 = sc.nextInt();
        System.out.println("Enter the roll number");
        this.roll_no = sc.nextInt();
    }
    public int getAverage(){
        int avg = (getSubject1() + getSubject2() + getSubject3()) / 3;
        return avg;
    }
    public void printAverage(){
        System.out.println("The average is : " + getAverage());
    }
    public void printRollNum(){
        System.out.println("The roll number of the student is: " + getRoll_no());
    }
    public static void main(String[] args){
        Marks[] e1 = new Marks[8];
        for(int i=0; i<2; i++) {
            System.out.println("Enter the data of student with id:");
            e1[i] = new Marks();
            e1[i].getDetails();
            e1[i].printAverage();
        }
        System.out.println("Roll number details");
        for(int i=0; i<2; i++){
            e1[i].printRollNum();
        }
    }
}
于 2020-06-01T12:19:19.933 回答
0

您需要在接受输入后调用您编写的方法。

...

System.out.println("Enter two numbers you'd like to be averaged.");
Scanner keyboard = new Scanner(System.in);
numb1 = keyboard.nextInt();
numb2 = keyboard.nextInt();
System.out.println(average (int numb1 , int numb2 ))

...

您可能希望提供一个选项菜单供用户选择以确定调用哪个方法

System.out.println("Select one option");
System.out.println("1. Enter two numbers you'd like to be averaged.");
System.out.println("2. Enter the 3 numbers you want averaged.");
System.out.println("3. Enter the number Range you want averaged.");

并根据该答案,您可以确定调用哪种方法

于 2013-10-22T00:42:00.850 回答
0

在访问说明符(public)之后和返回类型(double)之前放置 Java 关键字 static。你现在不应该担心这意味着什么。

于 2013-10-22T00:48:28.267 回答
0

如果您希望程序找到平均值,则需要在 main 方法中包含对该方法的调用。

numb1 = keyboard.nextInt();
numb2 = keyboard.nextInt();
System.out.println("The average of " + numb1 + " and " + numb2 + " is " + average(numb1,numb2);
}
于 2013-10-22T00:38:31.043 回答
0

您必须使用按位运算符。int a 和 b 的平均值可以计算为 avg=(a >> 1) + (b >> 1) + (((a & 1) + (b & 1)) >> 1);

于 2018-06-18T19:09:16.420 回答
0

main 方法只会执行它被要求执行的操作。如果要执行平均方法,则必须创建一个对象,传递所需的变量并从 main 方法调用方法。接受输入后,在 main 方法中编写以下行。

Average avrg = new Average();
System.out.println("The average is: " + avrg.average(numb1, numb2, numb3));

如果您只想平均两个数字,请只写 numb1 和 numb2。

于 2019-02-02T19:02:15.020 回答