【java基礎】怎樣結束控制檯輸入

當使用Scanner(System.in)獲取控制檯輸入時,一般都是以這樣的方式,舉一個例子,如

當控制檯輸入不是"-"時,就將其壓入棧中,當輸入爲"-",棧不爲空則彈出。

其中的while(in.hasNext())永遠爲真,最後的語句永遠無法執行。

import java.util.Scanner;
import java.util.Stack;

public class InTest {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		Stack<String> s = new Stack<String>();
		while(in.hasNext()){// in.hasNext()永遠爲真
			String str = in.nextLine();
			if(!str.equals("-"))
				s.push(str);
			else if(!s.isEmpty()) 
				System.out.println(s.pop() + " ");
		}
		// 這個語句永遠無法執行
		System.out.println("(" + s.size() + "left on stack)");
	}
}

怎樣結束控制檯的輸入呢?可以通過判斷in.hasNext()是否爲真,使用hasNext()方法的帶參數的重載方法。

import java.util.Scanner;
import java.util.Stack;

public class InTest {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		Stack<String> s = new Stack<String>();
		while(!in.hasNext("eof")){// 通過判斷in.hasNext()的參數
			String str = in.nextLine();
			if(!str.equals("-"))
				s.push(str);
			else if(!s.isEmpty()) 
				System.out.println(s.pop() + " ");
		}
		System.out.println("(" + s.size() + "left on stack)");
	}
}
當輸入爲字符串eof時,則停止控制檯的輸入。


發佈了46 篇原創文章 · 獲贊 35 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章