【发布时间】:2011-01-04 01:41:11
【问题描述】:
Java 中的“自动递增”字母表——这可能吗?在没有第三方库的情况下从 A 到 Z?
【问题讨论】:
-
你能澄清一下这个问题吗?你已经拥有了什么,你想做什么?
-
我只是在寻找一些东西来填满我的数组:)
标签: java auto-increment
Java 中的“自动递增”字母表——这可能吗?在没有第三方库的情况下从 A 到 Z?
【问题讨论】:
标签: java auto-increment
这是没有第三方库的代码,
public class JavaPrintAlphabet
{
public static void main(String[] args)
{
System.out.println("Printing the alphabets from A to Z : ");
char alpha;
for(alpha = 'A'; alpha <= 'Z'; alpha++)
{
System.out.println(alpha);
}
}
}
输出
Printing the alphabets from A to Z : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
有关打印字母表的 Java 程序的更多信息,请参阅 this resource。
【讨论】:
for (char alphabet = 'a'; alphabet <= 'z'; alphabet++) {
System.out.println(alphabet);
}
将此用于小写字母。
【讨论】:
你正在寻找这样的东西:
for( int i = 'a'; i < 'z'; i++ )
System.out.println((char)i); // Cast int to char
【讨论】:
是的,你可以这样做:
for (char alphabet = 'A'; alphabet <= 'Z'; alphabet++) {
System.out.println(alphabet);
}
类型转换也可以:
for (int i = 65; i <= 90; i++) {
System.out.println((char)i);
}
【讨论】:
强制 Java 8 解决方案:
IntStream.rangeClosed('A', 'Z')
.mapToObj(c -> "" + (char) c)
.forEach(System.out::println);
【讨论】:
这是我的解决方案,只是比上面的其他示例稍微复杂一点,但可以扩展为其他迭代(使用模式迭代器):
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
【讨论】:
这是一段代码,可以查看到底发生了什么(或至少打印输出:P):
for(int i = 0; i < 26; i++)
{
System.out.println((char)('A' + i) + ":" + ('A' + i) + " : " + (char)('a' + i) + ":" + ('z' + i));
}
【讨论】:
是的,像这样:
for (int i = 0; i < 26; i++)
{
char upper = (char) ('A' + i);
char lower = (char) ('a' + i);
...
}
【讨论】:
for (char c = 'A'; c <= 'Z'; c++) {
...
}
【讨论】:
for (char c = 'a'; c <= 'z'; c++)
//whatever
【讨论】: