Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java将两行打印在一起_Java_Java.util.scanner - Fatal编程技术网

Java将两行打印在一起

Java将两行打印在一起,java,java.util.scanner,Java,Java.util.scanner,我试图在屏幕上打印一条消息,然后从键盘上获取一个值。我一行有4张照片,但它们之间有扫描方法。当我运行我的代码时,前两个打印一起运行,我不能在第一个打印后的第一个变量处插入值 case 1: System.out.println("###Book Data###"); System.out.print("Name of the book:\t"); String Name = key.nextLine();

我试图在屏幕上打印一条消息,然后从键盘上获取一个值。我一行有4张照片,但它们之间有扫描方法。当我运行我的代码时,前两个打印一起运行,我不能在第一个打印后的第一个变量处插入值

case 1:
            System.out.println("###Book Data###");
            System.out.print("Name of the book:\t");
            String Name = key.nextLine();

            System.out.print("ISBN of the book:\t");
            String ISBN = key.nextLine();

            System.out.print("Author of the book:\t");
            String author = key.nextLine();

            System.out.print("Copies of the book:\t");
            int copies = key.nextInt();
            book Book = new book(ISBN,Name,author,copies);
            lib.AddBook(Book);
            break;


#########Text Printed######
Please enter your selection:    1
###Book Data###
Name of the book:       ISBN of the book:

提前感谢您的帮助

println生成新行,而print不生成新行。您应该考虑使用PrimTLN,刷新缓冲区,或者调用新的行转义字符“\n”< /p>

PrtLn在打印没有打印的情况下生成新的行。您应该考虑使用PrimTLN,刷新缓冲区,或者调用一个新的行转义字符“\n”< /P> < P>这是因为上面的代码> >开关> /Cux>语句有<代码> KEY.NEXTIN() *. 扫描器读取整数,但将行尾字符

'\n'
保留在缓冲区中。您需要以某种方式使用
'\n'
字符,在
键.nextLine()之前将向您返回一些相关数据

要解决此问题,请插入

key.nextLine();
开关
语句前面


*不要问我如何知道:-)

这是因为您的
开关
语句上方的行具有
键.nextInt()
*

扫描器读取整数,但将行尾字符
'\n'
保留在缓冲区中。您需要以某种方式使用
'\n'
字符,在
键.nextLine()之前将向您返回一些相关数据

要解决此问题,请插入

key.nextLine();
开关
语句前面


*别问我是怎么知道的:-)

是的,这很有效!你能解释一下为什么会发生这种情况,或者通过搜索什么来找到问题的解决方案吗?@Seekerakos
Scanner
保留一个指向键盘输入缓冲区的“指针”。当用户键入内容时,字符进入缓冲区。从扫描仪读取时,字符将从缓冲区中删除。您要求用户输入一个菜单选项;他按下
1
,然后点击
[输入]
。您的代码从扫描仪读取
nextInt()
,取
'1'
[Enter]
仍然存在。现在,在
case
语句中请求
nextLine()
<代码>扫描仪
会看到
[输入]
,因此它会立即返回一条空行!如果我有insert key.close();它将执行与我插入key.nextLine()相同的操作;在我切换之前?@Seekerakos不,它会不一样,因为如果在调用
close()
后尝试读取任何内容,您会遇到异常。是的,这很有效!你能解释一下为什么会发生这种情况,或者通过搜索什么来找到问题的解决方案吗?@Seekerakos
Scanner
保留一个指向键盘输入缓冲区的“指针”。当用户键入内容时,字符进入缓冲区。从扫描仪读取时,字符将从缓冲区中删除。您要求用户输入一个菜单选项;他按下
1
,然后点击
[输入]
。您的代码从扫描仪读取
nextInt()
,取
'1'
[Enter]
仍然存在。现在,在
case
语句中请求
nextLine()
<代码>扫描仪
会看到
[输入]
,因此它会立即返回一条空行!如果我有insert key.close();它将执行与我插入key.nextLine()相同的操作;在我切换之前?@Seekerakos不,这不一样,因为如果在调用
close()
后尝试读取任何内容,您会遇到异常。