【问题标题】:Java GPA array scanner input and calculationJava GPA 数组扫描器输入和计算
【发布时间】:2012-05-19 16:32:58
【问题描述】:

我正在尝试使用扫描仪输入来计算带有数组的 GPA。我认为while循环是最好的,但我不确定。我有一种方法可以尝试从扫描仪输入到阵列中计算 GPA。附上我的代码。让我知道最简单的方法是什么。

import java.util.Scanner;


public class gpaArrayInput
{

/**
 * @param args
 */
public static void main(String[] args)
{
    // TODO Auto-generated method stub


    Scanner scan = new Scanner (System.in);

    int i = 0;
    //double average;
    int grades[]=new int [i];


    for (i=0; i<grades.length;i++){

    System.out.println ("Enter your final class grades for the semester: ");
        grades[i]=scan.nextInt();

    averageMethod();
    }}




public static void averageMethod()
{
    double sum=0;
    double average;

    for(int i=0; i<grades.length;i++)
    {

        sum += grades[i];

    }

    average = sum/grades.length;


    System.out.println("Your grade average is: "+average);
}

}

【问题讨论】:

  • 这是作业吗?如果是这样,请添加作业标签。
  • 这不是家庭作业,只是个人练习。
  • 为什么在你的循环中调用averageMethod()?首先获取所有成绩,然后调用averageMethod() 一次,而不是重复调用它。还有为什么要声明一个大小为 0 的数组?要求用户输入扫描仪的等级数。最后我会使用 System.out.Print("Enter your final..\n");以获得更好的输出。
  • 很难相信这不是家庭作业...

标签: java arrays loops methods user-input


【解决方案1】:

这是Scanner documentation

经过快速测试,这似乎可行:

import java.util.Scanner;

class ClassNamesShouldBeCapitalized
{
    public static void main(String[] args)
    {
        Scanner gradeScanner = new Scanner(System.in);

        int gradeCounter = 0;
        int gradeTotal = 0;

        System.out.println("Input grade: " );

        while(gradeScanner.hasNextInt()) {
            int nextGrade = gradeScanner.nextInt();
            System.out.println("Recorded grade: " + nextGrade);
            System.out.println("Input grade: " );
            gradeTotal += nextGrade;
            gradeCounter++;
        }

        if (gradeCounter > 0) {
            double avg = gradeTotal / gradeCounter;
            System.out.println("Here's your average: " + avg);
        }
        else {
            System.out.println("No grades found.");
        }
    }
}

【讨论】:

  • 您的示例中有一个错误。如果第一个输入不是 int,则会抛出异常。为什么不使用 while 而不是 do while?
  • 谢谢!不确定该异常是否与 do while 循环有关,但我修复了它。如果第一个输入是双层,我会得到一个除以零的异常(显然)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
相关资源
最近更新 更多