有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java结束while循环条件

我正在尝试制作一个简单的程序,它使用扫描仪进行输入,并有一个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) 个答案

  1. # 1 楼答案

    你应该改用nextLine

    while (scan.hasNextLine()) {
        String nextInput = scan.nextLine();
        stack.push(nextInput );
        if (nextInput.equals(" ")) {
            break;
        }
    }
    
  2. # 2 楼答案

    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

  3. # 3 楼答案

    你在做什么

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