用戶輸入5次,將它們存儲在一個變量中,並將所有5個值顯示在最後。我怎樣才能在Java中做到這一點?不使用數組,集合或數據庫。只有單個變量,如String
和int
。在不使用陣列的情況下在Java中存儲多個值
輸出應該是這樣的
https://drive.google.com/file/d/0B1OL94dWwAF4cDVyWG91SVZjRk0/view?pli=1
用戶輸入5次,將它們存儲在一個變量中,並將所有5個值顯示在最後。我怎樣才能在Java中做到這一點?不使用數組,集合或數據庫。只有單個變量,如String
和int
。在不使用陣列的情況下在Java中存儲多個值
輸出應該是這樣的
https://drive.google.com/file/d/0B1OL94dWwAF4cDVyWG91SVZjRk0/view?pli=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狀態'結尾的空字符串因此不包含在結果數組中'。
非常好的解決方案..但是split()方法需要一個String數組。有沒有其他方法可以檢索? –
如果您只需要遍歷字符串並輸出單個字符串,則可以執行以下操作: ' 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); } } ' –
你爲什麼不使用Stingbuilder或StringBuffer的,不斷追加一些分隔符,然後輸入文本。
使用簡單的String對象並將其與用戶提供的新值連接起來。
String myString = "";
// while reading from input
myString += providedValue;
String是java中的一個可變對象,因此每做一次修改,jvm都會創建一個新對象。所以我們最終會在JVM中添加不必要的對象 –
@SaurabhJhunjhunwala你的意思是** IM **可變 – Misha
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);
}
至少向我們展示了一些編碼。 – Saif
你可以通過轉向一本關於java的好書或教程來閱讀這些內容;學習Java ...然後開始自己做**。要求其他人做你的功課似乎是「高效」的;但價格很明顯,你需要更長的時間才能拿出自己的節目。 – GhostCat