Как использовать сканер в качестве паузы? - PullRequest
0 голосов
/ 02 февраля 2020

Я пишу программу, которая должна непрерывно проходить через циклы, с возможностью пользовательской остановки в любое время. Я хочу использовать сканер как средство для ввода пользователем того, что он хочет сделать, чтобы приостановить программу, но вместо этого программа делает паузу каждый раз, когда проходит цикл, и пользователь вынужден что-то вводить, прежде чем код продолжится. Мой код выглядит так:

for (int i = 0; i < 10; i++)
   {
     String pause = scan.next()
     {
           if (pause.equals("pause")
           {
              //break mechanism
           }
      }
  }

Есть идеи, как я могу использовать это с временной паузой? Я думал, может быть, это может быть что-то вроде «если пройдет 3 секунды, продолжить», но я не уверен, что это сработает, или как его кодировать. Спасибо за любую помощь.

Ответы [ 3 ]

0 голосов
/ 02 февраля 2020

Может быть так:

while(scan.hasNext()) {

   String pause = scan.next();
   if (pause.equals("pause"))
   {
     //stop
   }

}

Насколько я понял, ваша программа останавливается, когда фор-л oop завершается. Теперь while-l oop будет выполнено, когда больше нет ввода.

0 голосов
/ 02 февраля 2020

может быть, я думаю, что это поможет вам с вашей идеей

/*
 * 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();
            }
        }

    }

}
0 голосов
/ 02 февраля 2020

что я понял, это:

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();
            }
        }
    }
}

это будет работать ...

...