Scanner input = new Scanner(System.in);
int choose = 0;
String isGoOn = null;
do{
    System.out.println("================================================");
    System.out.println("1.增加用户名  2.查询用户名  3.修改用户名  4.删除用户名");
    System.out.println("================================================");
    System.out.println("请选择");
    if(input.hasNextInt()){
        choose = input.nextInt();
        switch(choose){
        case 1:
            System.out.println("您选择了1");
            break;
        case 2:
            System.out.println("您选择了2");
            break;
        case 3:
            System.out.println("您选择了3");
            break;
        case 4:
            System.out.println("您选择了4");
            break;
        dafault:
            System.out.println("请输入正确的数字");
            break;
        }
    }else{
        System.out.println("请输入正确的数字");
    }
    System.out.println("是否继续操作(y/n)");
    isGoOn = input.next();
}while("y".equals(isGoOn));
以上代码执行过程中,如果在请"选择后"输入非int型的值就会提示"请输入正确的数字",可是为什么在提示"是否继续操作"时无法从控制台输入呢?也就是isGoOn = input.next();不起作用了。但是如果我输入的时正确数字想循环时isGoOn = input.next();就起作用,可以在控制台输入。

解决方案 »

  1.   

    你上面的程序如果输入非int型的值,就直接被isGoOn获取啦,然后直接执行 "y ".equals(isGoOn);结束程序
      

  2.   

    lz注意查一下你的代码 while( "y ".equals(isGoOn)); 
    这里的"y "应该是"y"你多写了一个空格,所以导致 输入y回车没有想要的效果
    你把最后一行改成while( "y".equals(isGoOn)); 
      

  3.   

    再定义个String 变量  ,( 如GoOn)放在 
     GoOn=input.next();
     System.out.println( "是否继续操作(y/n) ");
     前面,用来接收前面输入的值就可以啦
      

  4.   

    帮楼主试了试,1楼为正解,不信你在请选择后输入y看看就知道了。
    2楼提示得对,应该为"y".equals(...)。
      

  5.   

    default 再改正一下 应该没问题
      

  6.   

    default he "y" 手误呵呵.  输入的字符时被isGoOn   =   input.next(); 接收了,但是我如果再加一个接收语句的话那输入正常数字的情况判断是否继续不得输入两次y才可以么。这个能避免么?
      

  7.   


    import java.util.Scanner;public class XinTest { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner   input   =   new   Scanner(System.in); 
    int   choose; 
    String   isGoOn ,GoOn; 
    do{ 
            System.out.println( "================================================ "); 
            System.out.println( "1.增加用户名     2.查询用户名     3.修改用户名     4.删除用户名 "); 
            System.out.println( "================================================ "); 
            System.out.println( "请选择 "); 
            if(input.hasNextInt()){ 
                    choose   =   input.nextInt(); 
                    switch(choose){ 
                    case   1: 
                            System.out.println( "您选择了1 "); 
                            break; 
                    case   2: 
                            System.out.println( "您选择了2 "); 
                            break; 
                    case   3: 
                            System.out.println( "您选择了3 "); 
                            break; 
                    case   4: 
                            System.out.println( "您选择了4 ");
                            break; 
                    default :
                            System.out.println( "请输入正确的数字 "); 
                            break; 
                    } 
            }else{ 
             GoOn=input.next();
                    System.out.println( "请输入正确的数字 "); 
            } 
           
           
            System.out.println( "是否继续操作(y/n) "); 
            
            isGoOn   =   input.next(); 
           
    }while( "y".equals(isGoOn) ); 
    }}