将列表更改为数组以计算等级平均值等

时间:2015-03-24 16:35:25

标签: java arrays methods

我必须创建一个程序,在一个方法中使用数组来获取学生成绩的用户输入。然后,在另一种方法中,我必须取这些等级并计算最小值,最大值,平均值等。

请保持谨慎我仍然是java的初学者。

----------我发现了菜单问题: ---我也无法使菜单正常工作。它需要打印并重复,直到用户键入5,退出。 -

编辑编码:

import java.util.Scanner;

{
    public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in);
    System.out.print("Please enter the number of students: ");
    int numStudents = keyboard.nextInt();

    int max = Integer.MIN_VALUE;
    int min = Integer.MAX_VALUE;
    int total = 0;

    for (int i=0; i<numStudents; i++){
        System.out.println("Please enter the grade of student" + (i+1));
        int grade = keyboard.nextInt();
        max = Math.max(max, grade);
        min = Math.min(min, grade);
        total += grade;
    }
    double average = total/numStudents;
    //menu here//

    System.out.println("Please choose form the following options: ");

    System.out.println("1- Display minimum grade");
    System.out.println("2- Display maximum grade");
    System.out.println("3- Display average");
    System.out.println("4- Display the standard deviation");
    System.out.println("5- Exit");

    System.out.print("-> ");
    int menu = keyboard.nextInt();


        if(menu==1)
        {
        System.out.println("The maximum grade is: " + max);
        }

        if(menu==2)
        {    
        System.out.println("The minimum grade is: " + min);
        }
        if(menu==3)
        {
        System.out.println("The average is: " + average);
        }
        if(menu==4)
        {    
        System.out.println("The standard deviation is: ");
        }
        if(menu==5)
        {
        System.out.println("Exit");
        }

       do{
           System.out.println("Please choose form the following options: ");

    System.out.println("1- Display minimum grade");
    System.out.println("2- Display maximum grade");
    System.out.println("3- Display average");
    System.out.println("4- Display the standard deviation");
    System.out.println("5- Exit");

    System.out.print("-> ");
    int menu1 = keyboard.nextInt();
     if(menu==1)
        {
        System.out.println("The maximum grade is: " + max);
        }

        if(menu1==2)
        {    
        System.out.println("The minimum grade is: " + min);
        }
        if(menu1==3)
        {
        System.out.println("The average is: " + average);
        }
        if(menu1==4)
        {    
        System.out.println("The standard deviation is: ");
        }
        if(menu1==5)
        {
        System.out.println("Exit");
        return;
        }
       }while(menu!=5);
       }

    }

3 个答案:

答案 0 :(得分:0)

在使用java时,尝试使用OOP概念解决此问题。如果您需要更多说明,请通过我来解决此系统非常容易。

使用getter和setter方法将类创建为Student或其他东西。

然后将您的最小,最大,平均逻辑分成不同的类别。

这将是一个明确的方式。

答案 1 :(得分:0)

您的代码中存在冗余。您不必两次编写菜单。 此外,您需要使用System.exit(0)退出程序,而不是返回。 在你的while条件应该是(menu1!= 0),但你已经写了(menu!= 0)而不是。 您也可以使用break语句。

答案 2 :(得分:0)

看起来你已经开始工作了(除了标准偏差部分),但你的代码有点多余。您需要两次打印菜单,这是不必要的。

也许创建一个方法,如:

public static int printMenu()
    {
        System.out.println("Please choose form the following options: ");

        System.out.println("1- Display minimum grade");
        System.out.println("2- Display maximum grade");
        System.out.println("3- Display average");
        System.out.println("4- Display the standard deviation");
        System.out.println("5- Exit");

        System.out.print("-> ");
        return 0;
    }

然后使用while循环重新格式化条件语句,如:

 while (menu != 5)
 {
     if(menu==1)
     {
        System.out.println("The maximum grade is: " + max);
     }
     if(menu==2)

     ...


     printMenu();
     menu = keyboard.nextInt();
 }