gpt4 book ai didi

java - java中读取输入的问题

转载 作者:行者123 更新时间:2023-12-01 23:27:20 28 4
gpt4 key购买 nike

我编写了一个使用 java 中内置堆栈 API 的程序。

    Stack <Integer> stack = new Stack<>();
int n = in.nextInt(); // number of instructions
in.nextLine(); // code to consume \n left out after nextInt()
String str="";
for(int i=0 ; i<n ; i++)
{
str = in.nextLine(); // Instructions for operations. Ex: 1) + 20 (pushes 20 to stack) 2) - (pops item)
char ch = str.charAt(0);
if(ch=='+')
stack.add(Integer.parseInt(str.substring(1).trim()));
else
System.out.println(stack.pop());
}
System.out.println(str); //statement that I wrote to debug

如果我逐行输入输入,即首先输入指令数,然后输入一行中的每个指令,则效果很好。但是,如果我粘贴一组输入行并按 Enter 键,那么此代码将读取一个额外的行输入。

为了清楚起见,让我用我尝试过的示例来解释这一点:

    input text:
6
+ 1
+ 10
-
+ 2
+ 1234
-

预期输出是:

    10
1234

但是程序在打印 10 后正在等待读取输入,因此输出如下所示:

    10
//waiting for input now if I enter some text let's say test and hit enter, then it's printing 1234.
1234

我编写了最后一个 println 语句来测试我是否正在读取输入并且字符串 str 正在打印 -test

有人可以解释一下为什么会出现这种行为吗?

最佳答案

java.util.Scanner 类的 nextLine() 方法使扫描器前进到当前行并返回跳过的输入。此函数打印当前行的其余部分,省略末尾的行分隔符。

如果您尝试粘贴一组指令,请尝试在该组指令的每一行之后添加“\n”,否则它可能会认为整组指令只是一行。

您还可以使用 hasNextLine() 方法来测试线条的感知方式。

关于java - java中读取输入的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58302800/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com