我可以遍歷字母表,但我試圖保留最後一次迭代並添加下一個字母。 這是我的代碼。for循環,通過字母重複? java
for(char alphabet = 'a'; alphabet <='z'; alphabet ++)
{
System.out.println(alphabet);
}
我希望它打印出看起來像這樣的東西。
一個
AB
ABC
ABCD
ABCDE .....等等。這怎麼可能?
我可以遍歷字母表,但我試圖保留最後一次迭代並添加下一個字母。 這是我的代碼。for循環,通過字母重複? java
for(char alphabet = 'a'; alphabet <='z'; alphabet ++)
{
System.out.println(alphabet);
}
我希望它打印出看起來像這樣的東西。
一個
AB
ABC
ABCD
ABCDE .....等等。這怎麼可能?
您需要將char alphabet
添加到字符串中。
String output = "";
for(char alphabet = 'a'; alphabet <='z'; alphabet++)
{
output += alphabet;
System.out.println(output);
}
這應該爲你工作;)
我會去與StringBuffer或StringBuilder。喜歡的東西:
StringBuffer
StringBuffer sb = new StringBuffer();
for (char alphabet = 'a'; alphabet <= 'z'; alphabet++) {
sb.append(alphabet);
System.out.println(sb.toString());
}
StringBuilder
StringBuilder sb = new StringBuilder();
for (char alphabet = 'a'; alphabet <= 'z'; alphabet++) {
sb.append(alphabet);
System.out.println(sb.toString());
}
字符串VS StringBuffer的VS StringBuilder的:
字符串:這是不可改變的,所以當你做任何修飾字符串,它會創建新的實例,並會吃掉內存太快。
StringBuffer:您可以使用它來創建動態字符串,同時只有1個對象將在那裏,所以使用的內存將會非常少。它是同步的(這會讓它變慢)。
StringBuilder:它類似於StringBuffer。其他的區別是:它不同步,因此速度更快。
所以,更好的選擇是StringBuilder。 Read more。
使用Java 8
StringBuilder sb = new StringBuilder();
IntStream.range('a', 'z').forEach(i -> {
sb.append((char) i);
System.out.println(sb.toString());
});
'StringBuffer'已過時。使用'StringBuilder'。引用[javadoc](http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html):*「從版本JDK 5開始,'StringBuffer'已經補充了一個等效的類設計用於單線程'StringBuilder'。「* – Andreas
我已經在我的解決方案中添加了這兩個。 – Ambrish
'StringBuffer'被同步,這使得它變慢。除非你遇到多線程追加到同一緩衝區的極其罕見的情況,否則不應該使用它。總是使用'StringBuilder'。讓它成爲一種習慣。我建議從答案中刪除'StringBuffer',以免誤導任何來到這裏的新手Java開發人員。 – Andreas
我建議使用一個StringBuilder
:
// Using StringBuilder
StringBuilder buf = new StringBuilder();
for (char c = 'a'; c <= 'z'; c++)
System.out.println(buf.append(c).toString());
你也可以做到這一點稍快用char[]
,但是StringBuilder
更明顯,更容易使用:
// Using char[]
char[] arr = new char[26];
for (int i = 0; i < 26; i++) {
arr[i] = (char)('a' + i);
System.out.println(new String(arr, 0, i + 1));
}
個
替代品,你不應該使用:
StringBuffer
:同StringBuilder
,但同步,因此速度較慢。s = s.concat(new String(c))
:每次迭代分配2字符串,而不是僅1s += c
:內部+=
被編譯爲s = new StringBuilder().append(s).append(c).toString()
,所以窘況慢與指數響應時間。Offtopic,使用Java 8
IntStream很簡單:
StringBuilder builder = new StringBuilder("");
"abcdefghijklmnopqrstuvwxyz".chars().mapToObj(i -> builder.append((char) i))
.forEach(System.out::println);
用法:
public class AlphabetsLooping {
static final String input = "abcdefghijklmnopqrstuvwxyz";
public static void main(String[] args) {
StringBuilder builder = new StringBuilder("");
input.chars().mapToObj(i -> builder.append((char) i))
.forEach(System.out::println);
}
}
創建一個字符串變量,並與當前字母拼接它... –