Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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
Java 如何使用扫描仪作为暂停?_Java_Loops_Java.util.scanner - Fatal编程技术网

Java 如何使用扫描仪作为暂停?

Java 如何使用扫描仪作为暂停?,java,loops,java.util.scanner,Java,Loops,Java.util.scanner,我正在编写一个程序,它可以不间断地通过循环运行,用户可以选择随时暂停。我想使用Scanner作为一种手段,让用户输入他们想要暂停程序的操作,但是程序每次循环时都会暂停,并且用户必须在代码继续之前输入一些内容。我的代码如下所示: for (int i = 0; i < 10; i++) { String pause = scan.next() { if (pause.equals("pause") {

我正在编写一个程序,它可以不间断地通过循环运行,用户可以选择随时暂停。我想使用Scanner作为一种手段,让用户输入他们想要暂停程序的操作,但是程序每次循环时都会暂停,并且用户必须在代码继续之前输入一些内容。我的代码如下所示:

for (int i = 0; i < 10; i++)
   {
     String pause = scan.next()
     {
           if (pause.equals("pause")
           {
              //break mechanism
           }
      }
  }
for(int i=0;i<10;i++)
{
字符串pause=scan.next()
{
if(暂停等于(“暂停”)
{
//断裂机制
}
}
}

有什么想法可以让我暂时停顿一下使用它吗?我在想可能是“如果3秒钟过去,继续”之类的,但我不确定这是否有效,或者如何编写代码。谢谢您的帮助。

我理解的是:

import java.util.Scanner;

public class Main
{
    public static void main(String[] args) {
        WorkerThread workerThread = new WorkerThread();
        PausingThread pausingThread = new PausingThread(workerThread);
        workerThread.start();
        pausingThread.start();
    }
}

class WorkerThread extends Thread{

    @Override
    public void run() {
        while (true)
        {
            //Your work is being done
        }
    }
}

class PausingThread extends Thread{
    WorkerThread workerThread;

    PausingThread(WorkerThread thread){
        this.workerThread = thread;
    }

    @Override
    public void run() {
        Scanner scan = new Scanner(System.in);
        while (scan.next().equals("pause")){
            try {
                System.out.println("workerThread sleeping");
                workerThread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
这将起作用…

可能是这样的:

for (int i = 0; i < 10; i++)
   {
     String pause = scan.next()
     {
           if (pause.equals("pause")
           {
              //break mechanism
           }
      }
  }
while(scan.hasNext()){
字符串pause=scan.next();
if(pause.equals(“pause”))
{
//停止
}
}

据我所知,当for循环完成时,您的程序将停止。现在,while循环将在没有更多输入时完成。

也许我认为它对您的想法有帮助

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.generic;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Scanner;

/**
 *
 * @author wilso
 */
public class prueba {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        while (true) {
            String pause = scan.next();
            if (pause.toLowerCase().equals("pause")) {
                 System.out.println("Esperando quitar el modo pause");
                 pause = scan.next();
            }
        }

    }

}

你能详细解释一下,为什么要这样做吗?我想这有助于:)如果用户按键暂停,程序不会停止,因为循环是持续的。你的意思是如果用户写入暂停,程序不会停止stopping@DeepakJasawat我确实想让它停下来,但只有几次。我希望程序能连续运行,除非我输入“暂停”。现实生活中的一个例子:看电视。我的代码现在的工作方式,就像电视每秒钟暂停一次,直到我取消暂停。我希望它像电视一样独立运行,直到我决定按下暂停按钮。我希望这是有道理的。@Deepak Jasawat只需要一个break@DylanK25_现在检查它,以及用户如何停止暂停模式并再次输入?然后您不需要结束循环,您可以添加中断tne next pause=scan.next();