2013-01-11 17 views
0

我需要把IF語句打破腳本當用戶輸入字母Q使用如果打破的Java語句,並顯示輸入向後

我還需要施展輸入向後他們 - 我不確定我將如何做到這一點,這是我的代碼。

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.ArrayList; 
import java.util.Scanner; 


public class ArrayListOfNames { 

    public static void main(String[] args) throws FileNotFoundException { 

     ArrayList<String> list = new ArrayList<String>(); 
     Scanner Scan = new Scanner (System.in); 

     String name; 

     System.out.println("Please enter some words (You may press Q to finish): "); 

     while (Scan.hasNext()) 
     { 
      name = Scan.nextLine(); 
      list.add(name); 
     } 


     Scan.close(); 

    } 

} 
+0

你需要顯示在反向即文字或字符「這是輸入」「tupni SI SIHT 「OR」輸入是這個「 –

+0

或」sihT si tupni「... –

+0

」然後顯示任何用戶向後鍵入的內容。「是什麼在這項任務上說:/ – user1967788

回答

0

這個怎麼樣。

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.ArrayList; 
import java.util.Scanner; 


public class ArrayListOfNames { 

    public static void main(String[] args) throws FileNotFoundException { 

    ArrayList<String> list = new ArrayList<String>(); 
    Scanner Scan = new Scanner (System.in); 

    String name; 

    System.out.println("Please enter some words (You may press Q to finish): "); 

    while (Scan.hasNext()) 
    { 
     name = Scan.nextLine(); 
     if(name.equals("Q")) { 
      break; 
     } 
     list.add(name); 
    } 


    Scan.close(); 

    } 

} 
0

向後顯示輸入將此代碼放在掃描輸入的循環之後。

for(int i = list.size()-1; i>=0; i--) 
    System.out.println(list.get(i)); 
0
while (Scan.hasNext()) 
    { 
     name = Scan.nextLine(); 
     //Input is stored to name, so you need to compare input with Q 
     if("Q".equals(name) 
      { 
      //You need to exit the loop 
      break; 
      } 
     list.add(name); 
    } 
//You have what ever user entered in list. So use iterator (or) for-each to print them out again. 
+0

*「Q」.equals(name)* Yay爲尤達比較! :D – Doorknob

2

要覈對問:

while(Scan.hasNext()) 
{ 
    name = Scan.nextLine(); 
    if(name.equals("Q") || name.equals("q")) 
    { 
     break; 
    } 
    list.add(name); 
} 

爲了顯示以相反的順序列表:

for(int i = list.size() - 1; i >= 0; i--) 
{ 
    System.out.println(list[i]); 
} 
+0

使用equalsIgnoreCase。 –

+0

@DavidConrad是的,這樣會更好,但OP似乎只想要「Q」而不是「q」,所以我按照我作爲示範的方式構建了平等。 – NominSim

0

正如我懷疑這是家庭作業,也有可能是加分使用Stack類。

獲取循環中的數據並將其推入堆棧。然後當你需要打印堆棧彈出結果。

+0

在應該想象使用堆棧是非常多的矯枉過正 - 我會降級這種方法,因爲簡單的字符串操作更輕量級,用戶應該確保他們首先理解索引遍歷 –

+0

我同意它可能更高效,但如果它是作業理解數據像堆棧和隊列這樣的結構是基本的,聽起來可能就是這一點。 Stack是一個標準的Java類,與問題列表中的列表一樣有效,並且贊成回答。 –

0

從軟件工程的角度來看,我們儘量避免在循環中使用break;語句。相反,它建議使用終止

final String TERMINATOR = "Q"; 
boolean terminated = false; 

while (scanner.hasNext() && !terminated) 
{ 
    String line = scanner.next(); 

    if (!line.equals(TERMINATOR)) 
    { 
     list.add(line); 
    } 
    else 
    { 
     terminated = true; 
    } 
} 

另外請注意,我們怎麼辦!line.equals(TERMINATOR)代替line.equals(TERMINATOR),做常規列表追加。這是因爲列表附加是名義上的情況,因此我們希望儘可能少地執行檢查和跳轉。

至於反向打印出您的列表,你可以做一個簡單的向後迭代的for循環

for (int i = list.size()-1; i >= 0; i--) 
{ 
    System.out.print(list.get(i) + " "); 
}