Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java将字母表保存到数组_Java - Fatal编程技术网

Java将字母表保存到数组

Java将字母表保存到数组,java,Java,我尝试将字母表A-Z保存到我的数组中,但我不明白,为什么我只得到这个输出:Z public class Main { public static void main(String[] args) { char []tab = new char[25]; for (int i = 0; i<25; i++) { for (int j=65; j<91; j++) { tab[i] =

我尝试将字母表A-Z保存到我的数组中,但我不明白,为什么我只得到这个输出:Z

public class Main {

    public static void main(String[] args) {

        char []tab = new char[25];

        for (int i = 0; i<25; i++) {
            for (int j=65; j<91; j++) {
                tab[i] = (char)j;
            }
        }

        for (int i=0; i<25; i++) {
            System.out.println(tab[i]);
        }

    }
}
公共类主{
公共静态void main(字符串[]args){
char[]tab=新字符[25];

对于(int i=0;i您不需要嵌套循环,请尝试以下操作:

char[] tab = new char[26];
for (int i = 0, j = 65; j < 91; j++, i++) {
  tab[i] = (char) j;
}

for (int i = 0; i < 26; i++) {
  System.out.println(tab[i]);
}
char[]tab=新字符[26];
对于(inti=0,j=65;j<91;j++,i++){
表[i]=(字符)j;
}
对于(int i=0;i<26;i++){
系统输出打印项次(表[i]);
}

另外,数组大小应该是26而不是25。

您的算法是错误的

检查此更简单的解决方案:

public static void main(String[] args)
{
   char []tab = new char[25];

   for (int i = 0; i<25; i++) {
            tab[i] = (char)(i+65);
    }

    for (int i=0; i<25; i++) {
        System.out.println(tab[i]);
    }
}
publicstaticvoidmain(字符串[]args)
{
char[]tab=新字符[25];

对于(int i=0;i,让我们看看您的代码是如何工作的:

for (int i = 0; i<25; i++) {       //1
    for (int j=65; j<91; j++) {    //2
        tab[i] = (char)j;          //3
    }                              //4
}                                  //5
顺便说一句,您可以通过避免使用幻数(更多信息:)进一步提高此代码的可读性。因此,此代码可以重写为以下内容:

int amountOfLetters = 'Z' - 'A' + 1;
char[] tab = new char[amountOfLetters];

int i = 0;
for (char ch = 'A'; ch <= 'Z'; ch++) {
    tab[i++] = ch;
}

System.out.println(new String(tab));
int amountOfLetters='Z'-'A'+1;
char[]tab=新字符[amontfletters];
int i=0;

对于(char ch='A';ch,这是因为内部循环将
tab
的每个元素设置为
(char)90
。请尝试
tab[i]=65+i;
。您可以去掉i:tab[(int)ch-'A']=ch@Pier-AlexandreBouchard是正确的,但这会降低代码的可读性(至少在IMO中是这样)这是我想避免的。是的,但我认为这是可以接受的,因为你在开始时已经做了'A'+1。但是,你是对的,它的可读性较差。
int amountOfLetters = 'Z' - 'A' + 1;
char[] tab = new char[amountOfLetters];

int i = 0;
for (char ch = 'A'; ch <= 'Z'; ch++) {
    tab[i++] = ch;
}

System.out.println(new String(tab));