我想让用户在按下键盘上的任意键后,在第一个while循环中再次输入信息。我该如何实现呢?while循环是否有问题?我应该只有一个while循环吗?
import java.util.Scanner;
public class TestMagicSquare
{
public static void main(String[] args)
{
boolean run1 = true;
boolean run2 = true;
Square magic = new Square();
Scanner in = new Scanner(System.in);
while(run1 = true)
{
System.out.print("Enter an integer(x to exit): ");
if(!in.hasNextInt())
{
if(in.next().equals("x"))
{
break;
}
else
{
System.out.println("*** Invalid data entry ***");
}
}
else
{
magic.add(in.nextInt());
}
}
while(run2 = true)
{
System.out.println();
if(!magic.isSquare())
{
System.out.println("Step 1. Numbers do not make a square");
break;
}
else
{
System.out.println("Step 1. Numbers make a square");
}
System.out.println();
if(!magic.isUnique())
{
System.out.println("Step 2. Numbers are not unique");
break;
}
else
{
System.out.println("Step 2. Numbers are unique");
}
System.out.println();
magic.create2DArray();
if(!magic.isMagic())
{
System.out.println("Step 3. But it is NOT a magic square!");
break;
}
else
{
System.out.println("Step 3. Yes, it is a MAGIC SQUARE!");
}
System.out.println();
System.out.print("Press any key to continue...");// Here I want the simulation
in.next();
if(in.next().equals("x"))
{
break;
}
else
{
run1 = true;
}
}
}
}
5条答案
按热度按时间vxbzzdmp1#
你可以创建这个函数(只适用于回车键),并在代码中的任何地方使用它:
如果您使用扫描仪:
33qvvth12#
1)参见
while(run1 = true)
和while(run2 = true)
=是java中的赋值运算符。使用==运算符来比较原语
2)你可以这样做
bf1o4zei3#
我的答案仍然只适用于Enter键,但它不会在输入流上留下可能会妨碍以后的内容(System.in.read()可能会在流上留下下一次输入时读取的内容),所以我读了整行(这里我使用Scanner,但我想这实际上并不必要,你只需要一些东西来去除输入流中的整行):
lnvxswe24#
在进入实现细节之前,我认为您需要退一步重新检查一下您的算法。根据我收集的信息,您希望从用户那里获得一个整数列表,并确定它们是否构成幻方。您可以在单个while循环中完成第一步。类似于以下伪代码:
之后,您可以输出有关数字的详细信息:
dohp0rv55#
https://darkcoding.net/software/non-blocking-console-io-is-not-possible/
转到Linux上的Java非阻塞控制台输入一节。
对于您的代码,您可以将main()数字计算移到一个新函数magicSquare()中,并让它在以下情况下返回false
并修改如下链接的代码