import java.util.*;public class InputTest {
public static void main(String[] args){
Scanner in =new Scanner(System.in);
System.out.println("What is your name?");
String name = in.nextLine();
System.out.println("How old are your?");//①
int age = in.nextInt();//②
System.out.println("Y?");//③
String yes = in.nextLine();//④
System.out.println("Hello," + name+ ". Next year,you'll be " + (age + 1) + "."
+ yes);
}
          }这样的话④就不会让你输入字符串 它会直接打印 像是把④给忽略了
如果把①②和③④换下就正常 什么原因?

解决方案 »

  1.   

    nextLine() 
      此扫描器执行当前行,并返回跳过的输入信息。
      

  2.   

    int age = in.nextInt();//②换成 int age = Integer.parseInt(in.nextLine());就好了
      

  3.   

    System.out.println("Y?");//③
    String yes = in.nextLine();//④
    这里的nextLine改成next就可以了,最好别用nextLine
      

  4.   

    在nextInt()后面用nextLine()相当于换行。如果在③和④之间插入一句"in.nextLine();"之后再试试。
      

  5.   


    String yes = in.nextLine();//④
    改成:
    String yes = in.next();//④就行了
      

  6.   

    What is your name?
    qq
    How old are your?
    22  yyyyyyyyyyy
    Y?
    Hello,qq. Next year,you'll be 23.  yyyyyyyyyyyin.nextInt(); 只读取了22String yes = in.nextLine();//④ 中 in.nextLine();再读取的时候,发现了“结尾处的行分隔符”(回车) 
    它会认为你已经输入完毕,直接输出读取到的值。
    因此,结合上面的测试结果,如果你输入的是22回车,④读取到的就是一个空字符串
    所以,看起来像是把④给忽略了
      

  7.   

    System.out.println("Y?");//③
    String yes = in.nextLine();//④
    System.out.println("Hello," + name+ ". Next year,you'll be " + (age + 1) + "."
    + yes);你还没有读到下一行,你的程序就结束了。
    这里不能用nextLine(),你换next()试试应该可以的。