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 的区别是:它不同步,因此速度更快。

因此,更好的选择是 StringBuilderRead 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());
});