2015-04-07 55 views
-2

用戶輸入5次,將它們存儲在一個變量中,並將所有5個值顯示在最後。我怎樣才能在Java中做到這一點?不使用數組,集合或數據庫。只有單個變量,如Stringint在不使用陣列的情況下在Java中存儲多個值

輸出應該是這樣的

https://drive.google.com/file/d/0B1OL94dWwAF4cDVyWG91SVZjRk0/view?pli=1

+1

至少向我們展示了一些編碼。 – Saif

+3

你可以通過轉向一本關於java的好書或教程來閱讀這些內容;學習Java ...然後開始自己做**。要求其他人做你的功課似乎是「高效」的;但價格很明顯,你需要更長的時間才能拿出自己的節目。 – GhostCat

回答

1

這似乎是一個不必要的無用功,但我離題...

如果你想將它們存儲在一個字符串,你可以做到這一點,像這樣:

Scanner in = new Scanner(System.in); 

String storageString = ""; 

while(in.hasNext()){ 
    storageString += in.next() + ";"; 
} 

如果您隨後輸入foo bar baz storageString將包含foo;bar;baz;。 (in.next()會將輸入字符串讀取到空格中,並且in.hasNext()在行末尾返回false)

隨着更多字符串的輸入,它們被追加到storageString變量中。要檢索字符串,可以使用String.split(String regex)。使用該被像這樣完成:

String[] strings = storageString.split(";"); 

其在此檢索到的從storageString可變以上的值應爲["foo", "bar", "baz"]strings陣列。

我希望這會有所幫助。使用字符串作爲存儲不是最佳選擇,因爲JVM每次在其上附加字符串時都會創建一個新對象。爲了解決這個問題,請使用StringBuilder

*編輯:我原本說strings陣列的值將是["foo", "bar", "baz", ""]。這是錯誤的。 javadoc狀態'結尾的空字符串因此不包含在結果數組中'。

+0

非常好的解決方案..但是split()方法需要一個String數組。有沒有其他方法可以檢索? –

+0

如果您只需要遍歷字符串並輸出單個字符串,則可以執行以下操作: ' int start = 0; (int i = 0; i <= storageString.length; i ++) sym = storageString.charAt(i); if(sym ==';'){ String out = storageString。subString(start,i-1); start = i; console.log(out); } } ' –

0

你爲什麼不使用Stingbuilder或StringBuffer的,不斷追加一些分隔符,然後輸入文本。

0

使用簡單的String對象並將其與用戶提供的新值連接起來。

String myString = ""; 

// while reading from input 
myString += providedValue; 
+0

String是java中的一個可變對象,因此每做一次修改,jvm都會創建一個新對象。所以我們最終會在JVM中添加不必要的對象 –

+2

@SaurabhJhunjhunwala你的意思是** IM **可變 – Misha

1
public static void main(String[] args) { 
    String s = ""; 
    Scanner in = new Scanner(System.in); 
    for(int i=0;i<5;i++){ 
     s += in.nextLine(); 
    } 
    System.out.println(s); 
} 
相關問題