java.lang.classcastexception:class[i不能被强制转换为类java.lang.Compariable]

vc9ivgsu  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(334)

所以首先:我意识到我的代码完全是一团糟。。。我很抱歉,我也查看了其他多个线程,但找不到任何有助于我的内容,或者至少我能够理解。
我将把它分成多个部分:首先:完整的错误消息

Exception in thread "main" java.lang.ClassCastException: class [I cannot be cast to class java.lang.Comparable ([I and java.lang.Comparable are in module java.base of loader 'bootstrap')
    at java.base/java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:320)
    at java.base/java.util.ComparableTimSort.sort(ComparableTimSort.java:188)
    at java.base/java.util.Arrays.sort(Arrays.java:1040)
    at Bingo.bingo(Bingo.java:77)
    at Bingo.main(Bingo.java:17)

下一步:完整代码

import java.util.Arrays;

public class Bingo{

  public static void main (String[] args){

    //bingo(zeilen, spalten, minWert, maxWert, keineDoppelten?);
    bingo(5,5, 1,99, true);

  }

  public static void bingo(int zeilen, int spalten, int min, int max, boolean keineDoppelten){

    //Karte des Spielers:
    int [] [] bingokarte;
    bingokarte = new int [zeilen] [spalten];

    int [][] tempArray;
    tempArray = new int [zeilen] [spalten];

    int y = 0;
    boolean checkForMultiples = false;
    int randomTemp;

    //Den Inhalt des Karten-Arrays generieren: (ohne sich wiederholende Zahlen als option)

    int anzahlFelder = zeilen * spalten;
    int zahlenBereich = max - min;

    if(keineDoppelten == true && zahlenBereich < anzahlFelder){

        System.out.println("Bitte geben Sie einen Zahlen bereich, der weiter als " + anzahlFelder + " an! Ihr momentaner Zahlenbereich umfasst " + zahlenBereich + ".");

        System.exit(0);

    }

    else if (keineDoppelten){

      for (int i = 0; i < zeilen ; i++) {

        for(int j = 0; j < spalten; j ++){

          randomTemp = (int)(Math.random() * ((max - min) + 1)) + min;

          tempArray = bingokarte;
          Arrays.sort(bingokarte);

          if(Arrays.binarySearch(bingokarte, randomTemp) >= 0){

            checkForMultiples = true;

            while(checkForMultiples == true)

              randomTemp = (int)(Math.random() * ((max - min) + 1)) + min;
              tempArray = bingokarte;
              Arrays.sort(bingokarte);

              if(Arrays.binarySearch(bingokarte, randomTemp) >= 0){

                checkForMultiples = true;

              }

              else{

                checkForMultiples = false;
                bingokarte[i][j] = randomTemp;

              }

            }

            else{

              bingokarte[i][j] = randomTemp;

            }

          }

        }

    }

    else{

        for (int i = 0; i < zeilen ; i++) {

            for(int j = 0; j < spalten; j ++){

              bingokarte[i][j] = (int)(Math.random() * ((max - min) + 1)) + min;

            }

        }

    }

    //Ausgabe:

    int laengeDerZeilenPlusAbstandszeilen = zeilen * 2 + 1;
    int laengeDerSpaltenPlusAbstandszeilen = spalten * 5 + 2;

    for (int i = 0; i < laengeDerZeilenPlusAbstandszeilen; i++) {

      if (i%2 == 0) {

        for(int a = 0; a < laengeDerSpaltenPlusAbstandszeilen; a++){

          if(a < 1){
            System.out.print(" ");
          }

          else{
            System.out.print("-");
          }

        }

        System.out.print("\n");

      }

      else{

        System.out.print(" | ");

        for (int x = 0; x < spalten; x++) {

          if(bingokarte[x][y] < 10){

            System.out.print(" " + bingokarte[x][y] + " | ");

          }

          else{

            System.out.print(bingokarte[x][y] + " | ");

          }

        }

        System.out.print("\n");

        y++;

      }

    }

  }

}

下面是代码中让我头疼的部分:

else if (keineDoppelten){

      for (int i = 0; i < zeilen ; i++) {

        for(int j = 0; j < spalten; j ++){

          randomTemp = (int)(Math.random() * ((max - min) + 1)) + min;

          tempArray = bingokarte;
          Arrays.sort(bingokarte);

          if(Arrays.binarySearch(bingokarte, randomTemp) >= 0){

            checkForMultiples = true;

            while(checkForMultiples == true)

              randomTemp = (int)(Math.random() * ((max - min) + 1)) + min;
              tempArray = bingokarte;
              Arrays.sort(bingokarte);

              if(Arrays.binarySearch(bingokarte, randomTemp) >= 0){

                checkForMultiples = true;

              }

              else{

                checkForMultiples = false;
                bingokarte[i][j] = randomTemp;

              }

            }

            else{

              bingokarte[i][j] = randomTemp;

            }

          }

        }

    }

如果你能帮我,我会很高兴的!谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题