java - 如何使用 switch 语句并获得正确的输出?

标签 java switch-statement calculator

我无法获取该程序的输出以返回学生的字母成绩。另外,我在最高等级方面遇到了麻烦。任何帮助都会很棒。

   import java.util.Scanner;

   public class GPACalc {

    public static void main(String[] args) {

    Scanner input = new Scanner ( System.in );
    System.out.println( "Last Name: " );
    String studentName = input.next();

    System.out.println( "First Name: " );
    String firstName = input.next();

    System.out.println( "Enter CWID: " );
    int id = input.nextInt();

    System.out.print( "Enter Student Grades: " );

    int count = 0;
    double total = 0.000;
    double avg;
    int max = 0, min = 0;

    int gradeNum = 0;
    while ( true ) {
        int grade;
        grade = input.nextInt();
        if ( grade < 0.000 || grade > 100 )
            break;

        if ( grade > max );
        max = grade;

        if ( grade < min )
            ;
        min = grade;
        total = total + grade;
        count++;
    }
    avg = total / count;

    char letter = 'H';

    switch( letter ) {
    case 'A': 
        avg = 100;
        System.out.println("You have a perfect score. Keep up the excellent work!");
        break;
    case 'B':
        avg = 90;
        System.out.println("You have an A. Great Job!");
        break;
    case 'C':
        avg = 80;
        System.out.println("You have a B. Keep studying hard!");
        break;
    case 'D':
        avg = 70;
        System.out.println("You have a C. Commit a little more of your time.");
        break;
    case 'E':
        avg = 60;
        System.out.println("You have a D. You might want to study.");
        break;
    case 'F':
        avg = 50;
        System.out.println("You have an F. Better luck next semester.");
        break;
    case 'G':
        avg = 0;
        System.out.println( "It's time to change majors.");
        break;
    }


    System.out.println("\n----------------------------------------------------------");
    System.out.println( "    STUDENT   IFORMATION" );
    System.out.println("\n----------------------------------------------------------");
    System.out.println( "  Student Name  -- " + firstName + " " + studentName );
    System.out.println( "  Student ID    -- " + id );
    System.out.println( "  Students GPA  -- " + avg );
    System.out.println( "   # of Grades  -- " + count );
    System.out.println( "  Highest Grade -- " + max );
    System.out.println( "  Lowest Grade  -- " + min );
    System.out.println("\n----------------------------------------------------------");



    }

}

最佳答案

您的“if”语句不起作用,因为您在它们后面加了分号。你的意思是这样做:

if (a) dosomething;

...但是你这样做:

if (a) ; // does nothing
dosomething; // always does something regardless of "a"

要么你做得完美,要么就行不通。没有“A代表努力”。

关于您希望使用 switch 语句,这很简单,但您已经尝试向后执行。首先,您计算平均值。 (这是个好主意。)然后你告诉计算机,成绩是“H”。 (为什么?这显然不是一个好主意。)然后你要求它打开等级(这是一个“H”),如果它是一个“H”,你就会用零覆盖你计算的平均值。所以所有学生都会得零分。还有 H。

你的意思是,取你计算出的平均值,并从中得到成绩。因此,打开平均值,并按大小写标签提供平均值可能为的值:

switch (avg)
  {
  case 100: case 99: case 98: // etc.
    letter = 'A';
    break;
  // and so on
  }

由于您可能不想将“case 50”向下键入“case 0”,因此只需使用“default:”来匹配您未明确列出的所有案例。

附:将你的 avg 变成 int (不是 double),这样你就可以打开它

p.p.s。打印出您计算的变量,以便您实际上知道它们是您认为应该是的...我们称之为“调试”;-)

关于java - 如何使用 switch 语句并获得正确的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21896583/

相关文章:

java - 在一个角度上移动一个点( vector )+ Libgdx

java - 将数据插入数据库会卡住我的应用程序

java - 在一段时间内从开关中退出,但没有 boolean 值,这可能吗? java

javascript - switch语句错误?

java - try catch 和用户输入

java - 在 Android 上的 WebView 中阻止 URL

java - 将 .Java 文件转换为 .Smali 文件

java - 返回Java代码的开头(计算器主菜单)

c# - 如何防止 C# 计算器中出现双位小数

Python计算器编程错误