import java.io.*;
class solary
{
public static void main(String[] agrs)throws IOException
{
char oper;
do
{
System.out.println("1.删除");
System.out.println("2.修改");
System.out.println("3.查询");
System.out.println("4.添加");
System.out.println("0.推出");
System.out.print("请输入选择:");
oper=(char)System.in.read();
switch(oper)
{
case '1':
System.out.println("sdsdsdsd");
break;
case '2':
System.out.println("dkfkj");
break;
case '3':
System.out.println("dfdfdfdf");
break;
case '4':
System.out.println("bbbbbbb");
break;
default:
System.out.println("输入错误");
}
}
while(oper!='0');
}
}
这个程序可以运行,但是我输入一个数字以后,他把那个界面给我打出来3次,不知道是为什么。要是没听懂,运行一下就知道那里不对了
----------------解决方案--------------------------------------------------------
oper=(char)System.in.read();
这一句实际上读入了三个字符,一个是你键盘敲的,一个回车,一个换行,所以会打三遍!
修改一下这一句!
----------------解决方案--------------------------------------------------------
我向你解释一下你输入1的过程
首先你输入了1,然后你按了回车,回车就代表一个换行符一回车符'\n'和'\r'
所以,你会输出三遍,
第一遍是为你输入的1而输出
第二遍是为你输入的'\n'而输出,对应的ASCII码10
第三遍是为你输入的'\r'而输入,对应的ASCII码13
为了避免这种情况
你可以用BufferedReader来读取行,这就可以不读\n\r了
----------------解决方案--------------------------------------------------------
也问个问题哈,你这个局部变量oper不附值,编绎如何通过的?
实际是可以通过的,不过好像语法不对
----------------解决方案--------------------------------------------------------
没有语法不对啊
它在用之前是确实能被赋值的,这种情况是可以编译通过的
----------------解决方案--------------------------------------------------------
oper=(char)System.in.read();
把这句删掉就编译通不过了
----------------解决方案--------------------------------------------------------
输入一个数字如1之后按回车实际上是输入了(1)、(\r)、(\n)、(-1)、
第一次读1 第二次读\r 第三次读\n 第四次读-1 输入的结尾
我的测试结果是这样的
最好是读行
我改了一下
import java.io.*;
class solary
{
public static void main(String[] agrs)throws IOException
{
int oper;
do
{
System.out.println("1.删除");
System.out.println("2.修改");
System.out.println("3.查询");
System.out.println("4.添加");
System.out.println("0.推出");
System.out.println("请输入选择:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
oper=Integer.parseInt(br.readLine());
switch(oper)
{
case 0:System.exit(0);
case 1:
System.out.println("sdsdsdsd");
break;
case 2:
System.out.println("dkfkj");
break;
case 3:
System.out.println("dfdfdfdf");
break;
case 4:
System.out.println("bbbbbbb");
break;
default:
System.out.println("输入错误");
}
}
while(oper!=0);
}
}
[此贴子已经被作者于2006-12-4 18:59:39编辑过]
----------------解决方案--------------------------------------------------------
我又错了
[此贴子已经被作者于2006-12-4 18:55:17编辑过]
----------------解决方案--------------------------------------------------------
问冰峰:
public class Test
{
public static void main(String[] args)
{
int x;
x=x+1;
System.out.println("x is"+x);
}
}
这啥这个编译通不过?
----------------解决方案--------------------------------------------------------
[此贴子已经被作者于2006-12-4 18:59:15编辑过]
----------------解决方案--------------------------------------------------------