Java中的"自增字母表"是什么?

43

在Java中实现“自动递增”字母表 - 是否有可能从A到Z而不使用第三方库?


1
请问你是否可以澄清问题。你已经拥有了什么,你想要做什么? - Tom Duckering
我只是在寻找一些东西来填充我的数组 :) - Dacto
9个回答

117

是的,你可以像这样做:

for (char alphabet = 'A'; alphabet <= 'Z'; alphabet++) {
    System.out.println(alphabet);
}

使用类型转换也是可能的:

for (int i = 65; i <= 90; i++) {
    System.out.println((char)i);
}

4
哇哈哈,我甚至从没考虑过这个,我还以为有一个神奇的函数可以做到这个呢,哈哈。不过我认为这种方法更好。 - Dacto

18
是的,像这样:
for (int i = 0; i < 26; i++)
{
    char upper = (char) ('A' + i);
    char lower = (char) ('a' + i);
    ...
}

9
for (char c = 'A'; c <= 'Z'; c++) {
  ...
}

请注意,这只会将大写字母转换为小写字母。如果您也想将小写字母转换为大写字母,则需要两个循环,或者在每次迭代中执行两个步骤,并将'A'和'a'之间的距离添加到c中。 - captncraig

4
您正在寻找类似这样的东西:
    for( int i = 'a'; i < 'z'; i++ )
        System.out.println((char)i); // Cast int to char

4

Java 8强制解决方案:

IntStream.rangeClosed('A', 'Z')
         .mapToObj(c -> "" + (char) c)
         .forEach(System.out::println);

2
这是我的解决方案,比上面的其他示例稍微复杂一些,但可以扩展到其他迭代(使用模式迭代器):
class Alphabet implements Iterable<String>{

    private char start;
    private char end;

    public Alphabet(char start, char end) {
        this.start=start;
        this.end=end;
    }

    @Override
    public Iterator<String> iterator() {
        return new AlphabetIterator(start, end);
    }

    class AlphabetIterator implements Iterator<String>{

        private String current;
        private String end;

        private AlphabetIterator(char start, char end) {
            this.current=String.valueOf(--start);
            this.end=String.valueOf(end);
        }   

        @Override
        public boolean hasNext() {
            return (current.charAt(0) < end.charAt(0));
        }

        @Override
        public String next() {
            char nextChar = current.charAt(0);
            return this.current=String.valueOf(++nextChar);
        }
    }

    public static void main (String[] arg){

        for (String str:new Alphabet('B', 'Y')){
            System.out.print(str+" ");
        }
    }
}

输出:B C D E F G H I J K L M N O P Q R S T U V W X Y

2
for (char c = 'a'; c <= 'z'; c++)
  //whatever

OP想要大写字母。 - Asaph

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

使用此代码转换小写字母。

0
这里有一段代码可以看到实际发生了什么(或者至少是打印输出:P):
for(int i = 0; i < 26; i++)
{
    System.out.println((char)('A' + i) + ":" + ('A' + i) + " : " + (char)('a' + i) + ":" + ('z' + i));
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接