for循环,遍历字母表? java
for loop, iteration through alphabet? 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 or 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());
}
字符串与 StringBuffer 与 StringBuilder:
String:它是不可变的,所以当你对字符串进行任何修改时,它会创建新实例并且会很快消耗内存。
StringBuffer:您可以使用它来创建动态字符串,同时只有 1 个对象在那里,因此使用的内存会非常少。它是同步的(这使它变慢)。
StringBuilder:类似于StringBuffer。 olny 的区别是:它不同步,因此速度更快。
因此,更好的选择是 StringBuilder。 Read more.
使用Java 8
StringBuilder sb = new StringBuilder();
IntStream.range('a', 'z').forEach(i -> {
sb.append((char) i);
System.out.println(sb.toString());
});
String s = "" ;
for(char alphabet = 'a'; alphabet <='z'; alphabet ++ )
{
s = s.concat(String.valueOf(alphabet));
System.out.println(s);
}
我建议使用 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 个字符串,而不是仅分配 1 个。
s += 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);
}
}
实际使用IntStream.range
您需要添加 +1
以获得最后一个字母 Z
所以,应该是
StringBuilder sb = new StringBuilder();
IntStream.range('a', 'z'+1).forEach(i -> {
sb.append((char) i);
System.out.println(sb.toString());
});
我可以遍历字母表,但我试图保留最后一次迭代并添加下一个字母。 这是我的代码。
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 or 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());
}
字符串与 StringBuffer 与 StringBuilder:
String:它是不可变的,所以当你对字符串进行任何修改时,它会创建新实例并且会很快消耗内存。
StringBuffer:您可以使用它来创建动态字符串,同时只有 1 个对象在那里,因此使用的内存会非常少。它是同步的(这使它变慢)。
StringBuilder:类似于StringBuffer。 olny 的区别是:它不同步,因此速度更快。
因此,更好的选择是 StringBuilder。 Read more.
使用Java 8
StringBuilder sb = new StringBuilder();
IntStream.range('a', 'z').forEach(i -> {
sb.append((char) i);
System.out.println(sb.toString());
});
String s = "" ;
for(char alphabet = 'a'; alphabet <='z'; alphabet ++ )
{
s = s.concat(String.valueOf(alphabet));
System.out.println(s);
}
我建议使用 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 个字符串,而不是仅分配 1 个。s += 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);
}
}
实际使用IntStream.range
您需要添加 +1
以获得最后一个字母 Z
所以,应该是
StringBuilder sb = new StringBuilder();
IntStream.range('a', 'z'+1).forEach(i -> {
sb.append((char) i);
System.out.println(sb.toString());
});