for循环,通过字母表迭代? java的

时间:2015-10-16 05:39:33

标签: java loops for-loop iteration alphabet

我可以遍历字母表,但我试图保留最后一次迭代并添加下一个字母。 这是我的代码。

for(char alphabet = 'a'; alphabet <='z'; alphabet ++ )
        {

            System.out.println(alphabet);
        }

我希望它能打印出这样的东西。

AB

ABC

ABCD

abcde .....等等。这怎么可能?

5 个答案:

答案 0 :(得分:6)

您需要将char alphabet添加到字符串中。

String output = "";

for(char alphabet = 'a'; alphabet <='z'; alphabet++ )
    {
        output += alphabet;
        System.out.println(output);
    }

这对你有用;)

答案 1 :(得分:4)

我将使用StringBufferStringBuilder。类似的东西:

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());
}

String vs StringBuffer vs StringBuilder

字符串:它是不可变的,所以当你对字符串进行任何修改时,它会创建新的实例并且会过快地占用内存。

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());
});

答案 2 :(得分:2)

我建议使用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(),因此指数响应时间非常慢。

答案 3 :(得分:0)

String s = "" ;  
for(char alphabet = 'a'; alphabet <='z'; alphabet ++ )
        {
            s = s.concat(String.valueOf(alphabet));
            System.out.println(s);
        }

答案 4 :(得分:0)

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);
  } 
}