一道题目 就是通过输入成绩来判断等级0-100,并且判断每个等级的成绩数。程序以输入负值来终止,为什么我输入了-1程序没终止?哪里错了!!!import java.util.*;public class Grade { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub System.out.println("Please input result:"); Scanner keyboard = new Scanner(System.in);
int result = keyboard.nextInt(); int a = 0, b = 0, c = 0, d = 0, f = 0;
int n = 0;
if (result < 0) {
System.exit(0);
} else {
while (result > 0) {
if ((result < 100) && (result > 90))
a++;
else if ((result < 89) && (result < 80))
b++;
else if ((result < 79) && (result > 70))
c++;
else if ((result < 69) && (result > 60))
d++;
else
f++; }
n++;
}
System.out.println("Total number of gardes =" + n);
System.out.println("Number of A's = " + a);
System.out.println("Number of B's = " + b);
System.out.println("Number of C's = " + c);
System.out.println("Number of D's = " + d);
System.out.println("Number of F's = " + f);
}
}

解决方案 »

  1.   

    while循环里最后加一句: result = keyboard.nextInt(); 
    n++应该提到while里吧?
      

  2.   


    import java.util.Scanner;public class Grade { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub System.out.println("Please input result:"); Scanner keyboard = new Scanner(System.in);
    int result = keyboard.nextInt(); int a = 0, b = 0, c = 0, d = 0, f = 0;
    int n = 0;
    if (result < 0) {
    System.exit(0);
    } else {
    while (result > 0) {
    if ((result < 100) && (result > 90))
    a++;
    else if ((result < 89) && (result < 80))
    b++;
    else if ((result < 79) && (result > 70))
    c++;
    else if ((result < 69) && (result > 60))
    d++;
    else
    f++;
    n++;//*******************
    result = keyboard.nextInt();//获得键盘输入的数据,进行下一轮循环 }
    //n++;加到上面
    }
    System.out.println("Total number of gardes =" + n);
    System.out.println("Number of A's = " + a);
    System.out.println("Number of B's = " + b);
    System.out.println("Number of C's = " + c);
    System.out.println("Number of D's = " + d);
    System.out.println("Number of F's = " + f);
    }
    }
      

  3.   

    写得很漂亮,呵呵。
    希望楼主多用debug,这样就能知道问题处在什么地方了
      

  4.   

    感谢3楼的
    后来我用布尔表达式来控制 发现还是循环里缺少result = keyboard.nextInt();
    这下搞懂了!
    import java.util.*;public class Grade { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub System.out.println("Please input result:"); Scanner keyboard = new Scanner(System.in);
    int result = keyboard.nextInt(); int a = 0, b = 0, c = 0, d = 0, f = 0;
    int n = 0;
    boolean resultt = true;
    while (resultt) {
    if (result < 0) {
    resultt = false;
    } else {
    while (result > 0) { if ((result < 100) && (result > 90))
    a++;
    else if ((result < 89) && (result > 80))
    b++;
    else if ((result < 79) && (result > 70))
    c++;
    else if ((result < 69) && (result > 60))
    d++;
    else
    f++;
    n++;
    result = keyboard.nextInt(); } }
    } System.out.println("Total number of gardes =" + n);
    System.out.println("Number of A's = " + a);
    System.out.println("Number of B's = " + b);
    System.out.println("Number of C's = " + c);
    System.out.println("Number of D's = " + d);
    System.out.println("Number of F's = " + f);
    }
    }