这个程序有什么问题

时间:2015-01-29 04:45:54

标签: java

我正在创建一个程序,我要求用户输入一个字母等级,然后打印出该等级的百分比范围的输出。例如,A +为95%至100%。我的程序编译但是当我运行它时,我获得了A +和A-的相同输出。此外,如果我输入A,它甚至不会工作。我不明白这个的原因。请帮忙。这是我的所有代码。它有3个课程。

public class gradesConverter {
  public static void main (String []args) {
    userI i = new userI();
    i.inputOutput();
  }
}


import java.util.Scanner;
class userI {
  public void inputOutput() {


    java.util.Scanner input=new java.util.Scanner(System.in);

    String letterGrade = "A";
    System.out.println("Enter your letter Grade"); 
    letterGrade = input.nextLine();


    char charGrade = letterGrade.charAt(0);
    char charGrade2 = letterGrade.charAt(1);
    converter conv = new converter();
    conv.grades(charGrade, charGrade2);


  }
}

public class converter {
  public void grades(char charGrade, char charGrade2) {

    switch (charGrade2)  {
      case '-': 

        switch (charGrade) { 
        case 'A': System.out.println ("Your percentage grade ranges from 80-86.");
        break;
        case 'B':  System.out.println ("Your percentage grade ranges from 70-72.") ;
        break;
        case 'C':  System.out.println ("Your percentage grade ranges from 60-62.") ;
        break;
        case 'D':  System.out.println ("Your percentage grade ranges from 50-52.") ;
        break;  

      }
    }




    switch (charGrade2) { 
      case '+':

        switch (charGrade) {
        case 'A': System.out.println ( "Your percentage grade ranges from 95-100.");
        break;
        case 'B':  System.out.println ( "Your percentage grade ranges from 77-79.") ;
        break;
        case 'C':  System.out.println ("Your percentage grade ranges from 67-69.") ;
        break;
        case 'D':  System.out.println ( "Your percentage grade ranges from 57-59.") ;
        break;  
        default: System.out.println ("Please enter a proper letter grade.");

      }
    }


    switch (charGrade) {
      case 'A': System.out.println ("Your percentage grade ranges from 87-94.");
      break;
      case 'B':  System.out.println ("Your percentage grade ranges from 73-77.") ;
      break;
      case 'C':  System.out.println ("Your percentage grade ranges from 63-66.") ;
      break;
      case 'D':  System.out.println ("Your percentage grade ranges from 53-56.") ;
      break;  

      case 'F': System.out.println ("Your percentage grade ranges from 0-49.") ;
      break;

      default: System.out.println ("Please enter a proper letter grade.");

    }
  }



}

1 个答案:

答案 0 :(得分:1)

您需要修复一些错误。

  1. chargrade2 = letterGrade.charAt(0)更改为chargrade2 = letterGrade.charAt(1) 这是错误的原因是因为您正在检索用户为两个chargrade变量输入的第一个字符。因此,当您输入“A”时,它不起作用,因为chargrade2也等于'A'。
  2. 在检索第二个字符之前,还需要检查字符串的长度,以避免索引超出范围异常。即如果它不存在,你就无法获得索引1处的字符。
  3. 您的switch语句结构不正确。您可以在单个switch语句中测试多个案例,如下所示:
  4.   

    switch (chargrade2) { case '-': //Code goes here break; case '+': //Code goes here break; default: break; }

    1. 还有一点不清楚(从您提供的图像中)如何处理单个角色等级。我个人会用if语句构造代码,该语句检查字符串的长度是1还是2.然后将相关的switch语句嵌套在里面。
    2. 此外,请将代码直接粘贴到问题中。导航到这些图像链接有点痛苦。