我使用堆疊和佇列資料結構的組合撰寫了我的代碼。我的代碼正在運行,但我的main()
方法有問題。
我正在使用回圈來讀取用戶的輸入。當用戶輸入時,回圈將中斷"Exit"
。
這個詞"Exit"
不應該被推送到堆疊中,但在我的代碼中它被推送了。
我已經使用if
條件來打破回圈,但它沒有用。
我的代碼:
public static void main(String[] args) {
StackQueue stackQueue = new StackQueue();
int dataLength = 0, i = 0;
Object data = "Start";
System.out.println("Enter data or 'Exit' to exit:");
while (!data.equals("Exit")) {
if (data.equals("Exit"))
break;
else {
data = input.nextLine();
stackQueue.enqueue(data);
dataLength ;
} // else
} // while loop
System.out.println("The entered data is: ");
while (dataLength > 0) {
System.out.println("The data no." (i = 1) ": " stackQueue.dequeue());
dataLength--;
} // while loop
}// Main Method
我的輸出:
uj5u.com熱心網友回復:
問題是您在將輸入添加到堆疊后檢查輸入是否為“退出”。相反,您可以做的是獲取輸入,然后再對其進行測驗。
data = input.nextLine();
while(!data.equals("Exit")){
stackQueue.enqueue(data);
dataLength ;
data = input.nextLine();
}
還有一件事是這個測驗
if (data.equals("Exit"))
沒有做任何事情,因為您已經在 while 回圈條件中檢查了相同的輸入。
uj5u.com熱心網友回復:
在代碼中,您列出了用戶提供的任何輸入都將添加到佇列中。并且 if 輸入等于回圈"Exit"
的條件while
將被觸發,即您的if
陳述句將永遠不會被執行。
您需要通過在讀取用戶輸入之后和將資料存盤到佇列之前立即while
放置中斷條件來更改第一個回圈。
為了避免冗余,while
可以將回圈的條件設定為true
因為if
陳述句將負責退出回圈。
// your code
while (true) {
data = input.nextLine();
if (data.equals("Exit")) break;
stackQueue.enqueue(data);
dataLength ;
}
// your code
帶有該更改的輸出
A
B
C
Exit
The entered data is:
The data no.1: C
The data no.2: B
The data no.3: A
旁注:
- 當您知道預期的型別是什么時,避免使用 Object 型別,在這種情況下,
data
必須是 typeString
; equals()
您可以使用代替嚴格比較equalsIgnoreCase()
,這樣輸入“Exit”和“exit”都會終止回圈。- 將代碼中使用的常量值定義為類
public static final
頂部的變數是一種很好的做法。然后按名稱參考它們。它使您免于排泄拼寫錯誤(在多次鍵入值時,您可能會在某處拼錯),并且如果您需要更改它們,您可以快速訪問這些常量,因為它們將被組合在一起而不是分散在各處編碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/471124.html
上一篇:如何在if條件下使用匯入的列舉?