import java.io.*;public class Average2{
public static void main(String args[])throws IOException
{
double average;
int counter,grade,total;
total=0;
counter=0;
System.out.println("Enter letter grade,Z to end:");
System.out.flush();
grade=System.in.read();
while(grade!='Z'){
if(grade=='A')
   total=total+4;
else if(grade=='B')
   total=total+3;
            else if(grade=='C')
   total=total+2;
else if(grade=='D')
   total=total+1;
else if(grade=='F')
   total=total+0;
System.in.skip(1);
counter=counter+1;
System.out.println("Enter letter grade,Z to end:");
System.out.flush();
grade=System.in.read();       
}
if(counter!=0){
average=(double)total/counter;
System.out.println("Class average is"+average);
}
else
   System.out.println("No grade were enterd");
}
}这个是我照书上打的,没有错误,可书上显示的是输入一个字母后按回车接着输入下一个,可我运行的时候只要一按回车就出错了,只能一个接一个的输完用“,”分开,最后按回车输出结果

解决方案 »

  1.   

    下次提问时,有错误一定要把异常信息一起帖出来.
    错误出在System.in.skip(1);不知道你这句话想做什么.
    先把它comment掉.至少你知道它能正常运行..
      

  2.   

    Enter letter grade,Z to end:
    A
    Enter letter grade,Z to end:
    Exception in thread "main" java.io.IOException: 句柄无效。
            at java.io.FileInputStream.skip(Native Method)
            at java.io.BufferedInputStream.skip(BufferedInputStream.java:344)
            at Average2.main(Average2.java:24)
    Press any key to continue...
    不好意思,因为我觉得大家会把程序复制过去自己验证一下所就就没把错误粘贴过来
    Enter letter grade,Z to end:
    A
    Enter letter grade,Z to end:
    Exception in thread "main" java.io.IOException: 句柄无效。
            at java.io.FileInputStream.skip(Native Method)
            at java.io.BufferedInputStream.skip(BufferedInputStream.java:344)
            at Average2.main(Average2.java:24)
    Press any key to continue...上面第一个是输入后直接按回车的结果,没法进一步执行了
    第2个是先把字母输入后的
      

  3.   

    Enter letter grade,Z to end:
    A,B,A,A,A,A,B,B,B,C,C,C,C,A,A,A,Z
    Enter letter grade,Z to end:
    Enter letter grade,Z to end:
    Enter letter grade,Z to end:
    Enter letter grade,Z to end:
    Enter letter grade,Z to end:
    Enter letter grade,Z to end:
    Enter letter grade,Z to end:
    Enter letter grade,Z to end:
    Enter letter grade,Z to end:
    Enter letter grade,Z to end:
    Enter letter grade,Z to end:
    Enter letter grade,Z to end:
    Enter letter grade,Z to end:
    Enter letter grade,Z to end:
    Enter letter grade,Z to end:
    Enter letter grade,Z to end:
    Class average is3.25
    Press any key to continue...
      

  4.   

    哦,还是谢谢你
    这个是JAVA how to program上的
    还是最前面的呢,在人家看来刚学java都能看这个了,真是搞死我了
      

  5.   

    从这本书的字面意思上看,这是个比较深入java设计思想的一本书,应该不是很适合初学者
      

  6.   

    说实话.你这段程序比较郁闷.不能说不正确,但是运行起来确实有错误.
    在工具里面运行就不会有问题.单独在命令提示行中运行就会有错误,
    另外,IO输入流中的skip方法在读文件输入流时有用过.
      

  7.   

    原来把将System.in.skip(1)改为System.in.skip(2)就OK了