Как ввести символ в качестве ввода, чтобы выйти из цикла, который ищет целое число? - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть эта программа, которая читает числа из входного файла, а затем просит пользователя ввести число.Затем программа считывает все числа в файле и, если введенный номер находится в файле, программа печатает обратно: «Номер находится в файле», если введенный номер отсутствует в файле, программа печатает обратно: «Номер нев файле. "Мне также нужно иметь возможность выйти из программы, если пользователь вводит 'q', но я не уверен, как я могу это сделать, видя, что 'q' - это char, и программа ищет вводint.Я создал переменную char quit = 'q', но я не уверен, где ее использовать, если это даже правильный способ начать.

package classwork7_2;
import java.util.*;
import java.io.*;

public class ClassWork7_2 {

public static void main(String[] args)throws IOException {

    Scanner s = new Scanner(System.in);

    int[] numbers = fileToArray();
    Arrays.sort(numbers);
    char quit = 'q';


    while (true) {
    System.out.print("Enter a number in the file: ");
    int numb = s.nextInt();
    int i = Arrays.binarySearch(numbers, numb);
    if (i < 0) {
        System.out.print("Number is not in file\n");
    } else {
        System.out.print("Number is in file\n");

    }
}


}

public static int[] fileToArray() throws IOException{

    Scanner s = new Scanner(System.in);
    int[] array = new int[7];

    System.out.print("Enter name of file: ");
    String filename = s.nextLine();

    File f = new File(filename);
    Scanner inputFile = new Scanner(f);
    int i = 0;

    while(inputFile.hasNext()){

       array[i] = inputFile.nextInt();
       i++;
    }
        inputFile.close();
        return array;
}
}

Ответы [ 3 ]

0 голосов
/ 17 ноября 2018

Вы можете изменить цикл while, как показано ниже:

Здесь вместо чтения nextInt, чтения string и преобразования в int, если это не q

while (true) {

        System.out.print("Enter a number in the file: ");
        String ln = s.nextLine();
        if("q".equals(ln)) {
            break;//exiting as user entered "q"
        }
        int numb  = Integer.parseInt(ln);
        int i = Arrays.binarySearch(numbers, numb);
        if (i < 0) {
            System.out.print("Number is not in file\n");
        } else {
            System.out.print("Number is in file\n");

        }

    }
0 голосов
/ 17 ноября 2018

Проверьте, что если у сканера есть int или буква 'q':

    while (true) {
        System.out.print("Enter a number in the file: ");
        if (s.hasNextInt()) {
            int numb = s.nextInt();
            int i = Arrays.binarySearch(numbers, numb);
            if (i < 0) {
                System.out.print("Number is not in file\n");
            } else {
                System.out.print("Number is in file\n");
            }
        }

        if (s.hasNext("q")) {
            return;
        }
    }
0 голосов
/ 17 ноября 2018
Scanner s = new Scanner(System.in);    
String userInput = s.next();
int result = Integer.parseInt(userInput);

Вы можете взять исходные числовые значения в виде строк, затем проанализировать их в целое число и использовать этот результат при использовании двоичного поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...