java程序问题

[复制链接]
查看11 | 回复2 | 2008-10-23 13:37:28 | 显示全部楼层 |阅读模式
输入一个字符转换成相对的字母,比如A转换为Z,a转为z等等,程序如下:
import java.io.*;
public class zhuanhuan
{
public static void main(String args[ ])
{

char c=' ';

char c2=' ';

do{

System.out.print("Enter a character please:");

try{

c2=(char)(System.in.read());


}


catch(IOException e){

}




if(c2>='A' && c2='a' && c2<='z')

{

c=(char)(219-c2);

System.out.println("You've enterd character "+c);

}

else if(c2==(char)48)

{

System.out.println("End");

}

else{

System.out.println("You've enterd wrong character!");


}

}while(c2!=(char)48);
}
}
这个程序在运行过程中每输入一个字符为什么会执行3次循环体?请指教……
要实现只能读取一个字符并且按回车执行后续语句,该如何解决呢?

回复

使用道具 举报

千问 | 2008-10-23 13:37:28 | 显示全部楼层
System.in.read()从输入流读取下一个数据字节。返回 0 到 255 范围内的 int 字节值。如果因已到达流末尾而没有可用的字节,则返回值 -1。 你的程序运行过程中之所以会执行3次循环,是因为你输入一个字符,然后回车,从read()方法读到的字节有三个:一个是你输入的字符,一个是回车,一个是换行。所以如果你输入2个字符再回车,则运行4次。 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class zhuanhuan { public static void m...
回复

使用道具 举报

千问 | 2008-10-23 13:37:28 | 显示全部楼层
最简单的方法是,在c2=(char)(System.in.read()); 后面加c3=(char)(System.in.read()); c4=(char)(System.in.read()); 把回车和换行接收掉...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行