所以首先:我意识到我的代码完全是一团糟。。。我很抱歉,我也查看了其他多个线程,但找不到任何有助于我的内容,或者至少我能够理解。
我将把它分成多个部分:首先:完整的错误消息
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;
}
}
}
}
如果你能帮我,我会很高兴的!谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!