2014-01-20 133 views
0

它不允许我输入我的选择,不管我是否想输入另一个年级,它应该允许我输入是或否的选择,如果我输入yes应该让我进入另一个年级,除非它只是拒绝接受用户输入?为什么这段代码无法正常工作(基本)

import java.util.Scanner; 

public class ExaminationGrades { 

    public static void main(String[] args) { 
     Scanner scan = new Scanner (System.in); 
     double grade; 
     String ch; 

     do { 
      System.out.println("Enter your grade: "); 
      grade = scan.nextDouble(); 

      if (grade <40) { 
       System.out.println("you failed"); 
      } else if (grade >=40 && grade <50) { 
       System.out.println("Pass"); 
      } else if (grade >=50 && grade <60) { 
       System.out.println("2:2"); 
      } else if (grade >=60 && grade <70){ 
       System.out.println("2:1"); 
      } else if (grade >=70 && grade <=100){ 
       System.out.println("1:1"); 
      } else 
       System.out.println("invalid entry"); 

      System.out.println("Would you like to enter another?"); 
      ch = scan.nextLine(); 

     } while(ch =="no"); 

     scan.close(); 
    } 

} 
+0

什么?这不是重复的 – user3204699

+0

你读过了吗?它回答你的问题。 – Doorknob

+0

是的! 'while(ch ==“no”);' –

回答

0

变化

while(ch =="no"); 

while(ch.equals("yes")) 

编辑

public static void main(String[] args) { 
    Scanner scan = new Scanner (System.in); 
    double grade; 
    String ch; 

    do { 
     System.out.println("Enter your grade: "); 
     grade = scan.nextDouble(); 
     scan.nextLine(); //Consume the newline character generated by hitting enter 

     if (grade <40) { 
      System.out.println("you failed"); 
     }else if (grade >=40 && grade <50) { 
      System.out.println("Pass"); 
     }else if (grade >=50 && grade <60) { 
      System.out.println("2:2"); 
     }else if (grade >=60 && grade <70){ 
      System.out.println("2:1"); 
     }else if (grade >=70 && grade <=100){ 
      System.out.println("1:1"); 
     }else 
      System.out.println("invalid entry"); 

     System.out.println("Would you like to enter another?"); 
     ch = scan.nextLine(); 

    }while(ch.equals("yes")); //Correctly compare strings 

    scan.close(); 
} 
+0

它仍然不允许我输入用户输入,我不能输入yes或不,它只是冻结在“你想进入另一个吗?” – user3204699

+0

你的'scan.nextDouble'不会消耗换行符,所以你需要在'scan.nextDouble()'后面加上'scan.nextLine()'。给我一分钟,我会把整个代码的例子。 – csmckelvey

+0

@ user3204699这对我来说运行得很好,让我知道会发生什么 – csmckelvey

相关问题