在编程判断学生等级的时候,我编写了了如下程序:
import java.io.*;
public class stugrade{
public static void main(String args[]) {
char grade=' ';    
while(true)
{

System.out.print("请输入学生成绩等级: ");
        try{
grade=(char)System.in.read();
}catch(IOException e){};
if(grade=='A'||grade=='B'||grade=='C')           
 System.out.println(grade+" is>=60");
else if(grade=='D')
  System.out.println(grade+" is<60");
else
  System.out.println(" 输入错误!");
  }
  }
  }
为什么在加了while循环后,输出是下面的结果呢?
请输入学生成绩等级: A
A is>=60
请输入学生成绩等级:  输入错误!
请输入学生成绩等级:  输入错误!
请输入学生成绩等级: D
D is<60
请输入学生成绩等级:  输入错误!
请输入学生成绩等级:  输入错误!
请输入学生成绩等级:为什么输入错误循环了两次呀。。在这个程序中我该怎么解决这个问题呢?请知道的给我说下。。谢谢了

解决方案 »

  1.   

    A + ENTER
    =
    'A' + '\r' + '\n' in Windows
      

  2.   

    楼上的说的对
    实际上你输入了一个A,并键入回车以后,Windows系统会接收三个字符,一个是'A',一个是'\r',一个是'\n','\r\n'对应于回车键。只是'A'是你程序中想要的字符,而后两个字符就会提示两个“输入错误!”,因为是属于else的情况。
      

  3.   

    解决办法有很多种,比如一开始的read改成读一行,但只判断第一个字符;或者你可以读一行以后放在一个数组里,对数组的每个元素都判断(放在循环里),若是ABCD就按照你的程序写,若是'\r'或'\n'就忽略。
      

  4.   

    将System.in.read()改为用Scanner类从键盘获得输入
      

  5.   

    import java.io.*;
    import java.util.Scanner;
    public class stugrade
    {
      public static void main(String args[]) throws IOException
     {
      float grade=0; 
      boolean aa=true;  
      Scanner scanner = new Scanner(System.in);
      //增加一个Scanner对象需要一个System.in对象来取得使用者的输入;
      while(aa)
      {
      //try{
         System.out.print("请输入学生成绩:");
         grade=scanner.nextFloat(); 
       // }catch(IOException e ) 
      // {System.out.println("InputMismatchException \n");}
        if(Float.isNaN(grade))
        {
        System.out.printf("不是浮点数,请重新输入:");
         aa=true;
        }
       else{
        if(grade>100||grade<0.0)
        {
        System.out.printf("不符合成绩的范围!\n");
        aa=true;
         }
        else{
        
          if(grade>80) 
          {          
          System.out.println("成绩属于A等");
          aa=false;
          }
          else if(grade>=60&&grade<=80)
          {
          System.out.println("成绩属于B等");
          aa=false;
          }
          else 
          {
          System.out.println(" 成绩属于C等");
          aa=false;
          }
         }
        }
       
        
       }//end while
      }
    }我弄了个。
      

  6.   

    内部培训资料:
    一、最新大型新东方J2EE培训视频录像(新东方高级JAVA培训讲师  20G  共6DVD)
          培训内容: 初级部分(280学时)+高级部分(400学时),共680学时。
      初级部分(280学时)
      1). JavaOO程序设计基础:J2sdk基础、Java 面向对象基础、Java API使用、数据结构及算法基础、Java高级类特性、异常处理; 
      2). J2SE平台程序设计:Java AWT图形界面程序开发,Swing图形程序设计,Socket网络应用程序设计,对象序列化,Java 常用数据结构,Applet,高级I/O流和文件编程,多线程程序设计;
      3). 项目开发:globle get 多线程下载系统 
      4). Java桌面系统项目开发:桌面项目,基于Socket的聊天室;数据库:SQL、ORACLE9i 数据库的管理基础; 
      5). Java Web应用编程:Java数据库编程:JDBC、JDBC-ODBC Java Web编程:JSP、Servlet、JavaBean、java应用编程服务器:Tomcat / … 集成开发环境(IDE):Jbuilder / Eclipse / … Java应用构建工具:Apache Ant / …; 
      6). 项目开发:移动公司计费账务管理系统            
      高级部分(400学时)
      1). Linux初步:Linux基本操作,LINUX下的Java程序开发,Linux系统的简单管理; 
      2). 数据库深入编程:PL/SQL;数据库和数据库设计库程序设计; 
      3). Struts、spring、hibernate:高级Java Web应用开发:业界通用的MVC设计模式,Struts架构、应用程序国际化、Struts Taglib; 
      4). 项目开发:大唐任务管理系统;
      5). J2ME程序设计:移动开发概述、J2ME界面程序设计、J2ME数据库程序设计、手机短信、多媒体短信(彩信)开发; 
      6). Java高级程序设计(J2EE):J2EE架构、EJB核心技术;J2EE主流开发工具JBuilder、应用服务器WebLogic ;Java和XML:XML, Web Service,异构系统整合、分布式应用;
      7). 软件系统架构设计:UML与系统建模和设计、Rational Rose、软件工程和软件过程模型、版本控制;
      8). 项目开发:中国移动电子运行维护系统;
    二、Oracle培训录像
       1.Oracle 9i DBA大型中文视频培训录像(全)(中国IT认证实验室 13.4G 共4DVD)
         *1Z0-007 Introduction to Oracle9i SQL 
         *1Z0-031 Oracle9i DBA Fundamentals I 
         *1Z0-032 Oracle9i DBA Fundamentals II 
         *1Z0-033 Oracle9i Performance Tuning
           另附全套PPT幻灯片培训讲稿。
        全程标准Oracle大学授课环境,资深Oracle认证讲师、中国电信深圳培训中心数据库讲师主讲。具有多年的Oracle DBA教学经验,授课风格自成一体,逻辑清晰、层次分明,讲解深入浅出、信息量大,实用性强,短时间内把您培养成高级数据库专家。
       2.Oracle 10G 数据库培训录像(中科院 共18讲)
    三、项目经理快速培训
        IT项目管理培训录像(项目经理提升必看)(共28集 Rmvb格式 1DVD)现在购买送
    1.孙鑫 XML网页编程开发详解 (内容大小2G 1DVD)
    2.孙鑫J2EE培训录像(共76讲 含源代码及PPT幻灯片课件 1DVD)
        本视频侧重于J2EE框架机制原理,内容分为spring,struts,hibernate,powerdesign四个部分的讲解(Spring共23讲,详细讲解了spring的使用。Struts共13讲,Struts通过一个完整视例讲解全部流程,以及标签库。Hibernate共24讲,深入讲解了hibernate的机制。PowerDesigner共6讲,讲解数据库建模的步骤及其工具的使用。)
    需要的速联系
    Q Q: 3670989
    MSN: [email protected]
      

  7.   

    package ch2;import java.io.*;public class stugrade {
    public static void main(String args[]) {
    char grade = ' ';
    //while (true) {
    System.out.print("请输入学生成绩等级: ");
    try {
    grade = (char) System.in.read();
    } catch (IOException e) {
    }
    if (grade == 'A' || grade == 'B' || grade == 'C') {
    System.out.println(grade + " is>=60");
    } else {
    if (grade == 'D')
    System.out.println(grade + " is<60");
    else
    System.out.println(" 输入错误!");
    }
    //}
    }
    }
    不知道你要while(true)干嘛,去掉就好了。
    还有你的那个if else要对好点最好加个括号。
      

  8.   

    将代码的输入部分改成这个就不会有问题了
    /////////////////////////////////////////
    while(true)
    {
    System.out.print("input>");     
    BufferedReader stdin  = new BufferedReader(new InputStreamReader(System.in));
    try
    {
    sTemp = stdin.readLine();
    }
    catch(IOException ie)
    {
    System.err.println("IO error!");
    }
    }//////////////////////////////////////////////要先声明一个字符串sTemp
    里面就是你要的输入结果了