我知道这在StackOverflow上被问过很多次,但我尝试过很多不同的解决方案,没有一个奏效。所以我决定问问社区该怎么做。下面是我的代码中的相关片段。
public class Calculator
{
public static void main(String[]args)
{
ArrayList<String> inputStorage = new ArrayList<String>();
Scanner input = new Scanner(System.in);
String rawInput;
boolean mainLoop = true;
String exitInput;
String mainMenuInput;
while(mainLoop == true)
{
mainMenuInput = input.nextLine()
switch(mainMenuInput)
{
case "Expression":
System.out.println("Type an expression");
while(input.hasNext)
{
rawInput = input.next();
inputStorage.add(rawInput);
}
break;
case "Equation":
System.out.println("Type an equation");
while(input.hasNext)
{
rawInput = input.next();
inputStorage.add(rawInput);
}
break;
case "exit":
System.out.println("Are you sure you want to exit")
exitInput = input.nextLine();
switch(exitInput)
{
case "yes":
case "Yes":
mainLoop = false;
case "no":
case "No":
break;
default:
System.out.println("That was not an option")
break;
}
default:
System.out.println("That was not an option");
break;
}
}
请注意,这只是我的代码中从控制台输入的部分,不包含任何其他内容。我有其他东西设置,要求代码是这种格式。
下面是一个列表,其中列出了对我的其余代码不起作用的东西:
由于您的扫描器
正在处理打开的流(system.in
),因此无法确定此流不在创建和发送更多数据的过程中,这意味着它无法返回false
正因为如此
while(input.hasNext()){
...
}
for (int i = 0; i < N; i++){
...
rawInput = input.next();
...
}
在只想处理一行标记的情况下,您可以首先读取该行,然后使用单独的扫描程序对其进行标记
Scanner lineScanner = new Scanner(input.nextLine());
while(lineScanner.hasNext()){
rawInput = lineScanner.next();
inputStorage.add(rawInput);
}
我正在尝试编写使用Scanner类从用户那里获取输入的代码。但是hasNext()、hasNextInt()和hasNextLine()每次都会运行无限循环。
不知道如何阻止这个while循环无限重复。我使用检查用户输入是否为int。如果没有输入int值,则循环将无限重复。
这是一个类的简单程序,它以分钟为单位提示用户他或她淋浴的时间长度(作为正整数,根据需要重新提示),然后打印同等数量的水瓶(作为整数)。 假设淋浴器每分钟使用1.5加仑水(192盎司),塑料瓶大小为16盎司 我的do-while循环成功地拒绝了负数和0,但是,如果我输入“foo”这样的文本,当提示输入淋浴的长度(以分钟为单位)时,程序将进入无限循环,永远运行该循环并打印“How long is yo
编辑:重新措辞 我有一个账户列表:帐户 当我总结这份清单时,我得到了账户数量和账户总价值的概述 名称摘要 我添加了马克,因为他现在将是一个帐户所有者,但他目前没有任何帐户。 第一步是查看每个人应该拥有的账户的平均数。有25个账户,5个所有者,所以每个人都应该有5个账户。总价值为15600英镑,共有5名所有者,因此每个人的账户价值应该在3120英镑左右。这是一个估计值,所以我对它稍微偏离一点没意见。
Q.while循环条件是作为一个整体进行计算,还是在决定是否进入循环之前一次计算一个条件?
我正在尝试制作一个简单的程序,它使用扫描器进行输入,并有一个while循环,该循环继续输入,直到输入结束字符为止。我想让扫描器接受输入并将一个字符串添加到堆栈列表中。我试图弄清楚为什么这段代码在键入空格时不终止while循环。