завершение условия цикла while - PullRequest
0 голосов
/ 30 октября 2018

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

import java.util.Scanner;

public class ReverseString<E> {

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

    //while(scan.hasNext() && !stack.equals(" ")){
 //       while(!scan.nextLine().equals("")){
    while (scan.hasNext()) {
        stack.push(scan.next());
        if (scan.equals(" ")) {
            break;
        }

    }

    System.out.print(stack.pop() + " ");


 }
}

Ответы [ 3 ]

0 голосов
/ 30 октября 2018

Вы делаете,

if (scan.equals(" ")) {
    break;
}

, что означает, что вы сравниваете объект Scanner scan с пробелом. Вместо этого попробуйте сделать следующее (вы должны сравнить scan.next () с пробелом):

import java.util.Scanner;

public class ReverseString<E> {

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

    //while(scan.hasNext() && !stack.equals(" ")){
 //       while(!scan.nextLine().equals("")){
    while (scan.hasNext()) {
        String nextInput = scan.next();
        stack.push(nextInput );
        if (nextInput.equals(" ")) {
            break;
        }

    }

    System.out.print(stack.pop() + " ");


 }
}
0 голосов
/ 30 октября 2018

Вы должны использовать nextLine вместо

while (scan.hasNextLine()) {
    String nextInput = scan.nextLine();
    stack.push(nextInput );
    if (nextInput.equals(" ")) {
        break;
    }
}
0 голосов
/ 30 октября 2018
while (scan.hasNext()) {
    stack.push(scan.next());
    if (scan.equals(" ")) {
        break;
    }

}

изменить на

while (scan.hasNextLine()) {
    String value = scan.nextLine();
    if (" ".equals(value)) {
        break;
    }
    stack.push(value);
}

scan - это сканер, это не строка, scan.equals(" ") всегда возвращает false.

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