【问题标题】:"Auto increment" alphabet in Java?Java中的“自动递增”字母表?
【发布时间】:2011-01-04 01:41:11
【问题描述】:

Java 中的“自动递增”字母表——这可能吗?在没有第三方库的情况下从 A 到 Z?

【问题讨论】:

  • 你能澄清一下这个问题吗?你已经拥有了什么,你想做什么?
  • 我只是在寻找一些东西来填满我的数组:)

标签: java auto-increment


【解决方案1】:

这是没有第三方库的代码,

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

【讨论】:

    【解决方案2】:
    for (char alphabet = 'a'; alphabet <= 'z'; alphabet++) {
        System.out.println(alphabet);
    }
    

    将此用于小写字母。

    【讨论】:

      【解决方案3】:

      你正在寻找这样的东西:

          for( int i = 'a'; i < 'z'; i++ )
              System.out.println((char)i); // Cast int to char
      

      【讨论】:

        【解决方案4】:

        是的,你可以这样做:

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

        类型转换也可以:

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

        【讨论】:

        • omg haha​​ 我从来没有想过这个,我实际上认为有一个神奇的功能可以做到这一点哈哈。这比我好得多。
        【解决方案5】:

        强制 Java 8 解决方案:

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

        【讨论】:

          【解决方案6】:

          这是我的解决方案,只是比上面的其他示例稍微复杂一点,但可以扩展为其他迭代(使用模式迭代器):

          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

          【讨论】:

            【解决方案7】:

            这是一段代码,可以查看到底发生了什么(或至少打印输出:P):

            for(int i = 0; i < 26; i++)
            {
                System.out.println((char)('A' + i) + ":" + ('A' + i) + " : " + (char)('a' + i) + ":" + ('z' + i));
            }
            

            【讨论】:

              【解决方案8】:

              是的,像这样:

              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。
                【解决方案10】:
                for (char c = 'a'; c <= 'z'; c++)
                  //whatever
                

                【讨论】:

                • OP 想要大写字母。
                猜你喜欢
                • 2011-03-31
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-07-21
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多