当前位置: 代码迷 >> Java相关 >> do while的使用问题
  详细解决方案

do while的使用问题

热度:159   发布时间:2006-12-04 18:07:26.0
do while的使用问题

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次,不知道是为什么。要是没听懂,运行一下就知道那里不对了

搜索更多相关的解决方案: void  查询  public  import  

----------------解决方案--------------------------------------------------------

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编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案