我需要编写一个自动运行的Java程序,但可以在用户输入时随时停止。 例如:
for (int i=0;i<1000000;i++){
System.out.println(i);
}
当用户输入exit时,程序应该停止,怎么做?
答案 0 :(得分:1)
如果输入等于do-while
,您可以使用"exit"
循环检查每次迭代:
String input = "";
Scanner sc = new Scanner(System.in); // for input
do {
input = sc.nextLine();
// ...
} while (!input.equals("exit")) // if input is "exit", the loop finishes:
答案 1 :(得分:0)
您可以通过多种方式完成此操作。我已经概述了一些应该涵盖你可能想要的大部分内容。
public class MultithreadedUserInput
{
public static void main(String[] args)
{
InputDetector detector = new InputDetector();
detector.start();
for (int i = 0; i < 1000000; i++)
{
System.out.println(i);
if (detector.getInput().equals("exit"))
{
break;
}
}
//do something after user types exit
}
}
和
import java.util.Scanner;
public class InputDetector implements Runnable
{
private Thread thread;
private String input;
private Scanner scan;
public InputDetector()
{
input = "";
scan = new Scanner(System.in);
}
public void start()
{
thread = new Thread(this);
thread.start();
}
@Override
public void run()
{
while (!(input.equals("exit")))
{
input = scan.nextLine();
}
}
public String getInput()
{
return input;
}
}
下面有if
个条件将解决方案2与解决方案3分开。if
语句之前的break;
调用检查input
的{{1}}的方法{1}}。 InputFrame
仅在用户按Enter后更新。另一个input
语句调用的方法只是检查if
中的文本。
JTextField
和
import javax.swing.JFrame;
public class JFrameInput
{
public static void main(String[] args)
{
InputFrame iFrame = new InputFrame();
iFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
iFrame.pack();
iFrame.setVisible(true);
for (int i = 0; i < 1000000; i++)
{
System.out.println(i);
if ((iFrame.getInput().equals("exit")))
//if (iFrame.checkInput("exit")) //use to exit without pressing enter
{
break;
}
}
//do something after user types exit
}
}