簡體   English   中英

結束while循環條件

[英]ending a while loop condition

我正在嘗試制作一個簡單的程序,該程序使用掃描儀進行輸入,並有一個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() + " ");


 }
}
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是一個Scanner,它不是String, scan.equals(" ")始終返回false。

您應該改用nextLine

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

你在做,

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

這意味着您正在將“掃描程序”對象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() + " ");


 }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM