Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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 DotCom游戏有大约1/5的时间出现错误消息_Java_Object_Arraylist - Fatal编程技术网

Java DotCom游戏有大约1/5的时间出现错误消息

Java DotCom游戏有大约1/5的时间出现错误消息,java,object,arraylist,Java,Object,Arraylist,我是Java新手,正在尝试构建一个网络游戏。但是,在我运行此程序的大约1/5时间估计中,出现以下错误: 主线程java.lang.IndexOutOfBoundsException中的异常:索引 63长度为49时超出边界 java.base/jdk.internal.util.premissions.OutofBoundsReconditions.java:64 在 java.base/jdk.internal.util.premissions.outOfBoundsCheckIndexPrec

我是Java新手,正在尝试构建一个网络游戏。但是,在我运行此程序的大约1/5时间估计中,出现以下错误:

主线程java.lang.IndexOutOfBoundsException中的异常:索引 63长度为49时超出边界 java.base/jdk.internal.util.premissions.OutofBoundsReconditions.java:64 在 java.base/jdk.internal.util.premissions.outOfBoundsCheckIndexPreconditions.java:70 在 java.base/jdk.internal.util.premissions.checkIndexPreconditions.java:248 java.base/java.util.Objects.checkIndexObjects.java:372 at java.base/java.util.ArrayList.getArrayList.java:439 at java:12 at AdvDotComLauncher.mainAdvDotComLauncher.java:23

代码如下: 发射装置

表类

网络类


我不知道是什么导致了这个问题。我是Java新手,所以这可能是一个新手错误:P无论如何,我在这个问题上能得到的任何帮助都将不胜感激。

这个简单的代码将显示您的错误

    Random random = new Random();
    char[] letters = "ABCDEFGHIJKLMNOPJRSTUVWXYZ".toCharArray();

    int chooseLetter = random.nextInt(letters[0]);

    System.out.println(chooseLetter);

字母[0]返回字符值A,该值的ascii值为65,然后调用该值,根据javadocs,该值将返回0到65之间的值。。用于创建表的奇怪代码不会创建具有这种长度的表

调试它。例外情况很明显。我们不是一个免费的调试服务。试着调试它,如果你失败了,至少要突出显示你面临这个问题的相关代码行。我是Java新手。代码有多奇怪,我该如何改进它?还有,这个问题的解决方案是什么?
    import java.util.ArrayList;

public class AdvDotComTable {
    public ArrayList<String> createTable(int size) {
        //Used to add the right amount elements to the Array
        int done = size * size;
        //Used for A0, A1, A2, B0, etc.
        int number = 0;
        //Used to tell when to increase the letter
        int size2 = size;
        //Used to tell which letter we're on by index
        int index = 0;
        ArrayList<String> table = new ArrayList<String>();
        char[] letters = "ABCDEFGHIJKLMNOPJRSTUVWXYZ".toCharArray();
        while (done > 0) {
            if (size2 == 0) {
                size2 = size;
                index++;
                number = 0;
            }
            table.add("" + letters[index] + number);
            number++;
            done--;
            size2--;
        }
        return table;
   }
}
import java.util.ArrayList;
import java.util.Random;

public class AdvancedDotCom {
    public void startGame(ArrayList<String> table, int size) {
         Random random = new Random();
         char[] letters = "ABCDEFGHIJKLMNOPJRSTUVWXYZ".toCharArray();

         int chooseLetter = random.nextInt(letters[size]);
         int chooseNumber = random.nextInt(size - 3);

         char grabLetterFromTable = table.get(chooseLetter).charAt(0);
         int grabNumberFromTable = Character.getNumericValue((table.get(chooseLetter).charAt(1)));

         System.out.print("You have to guess " + grabLetterFromTable + grabNumberFromTable + ", ");
         System.out.print("" + grabLetterFromTable + (grabNumberFromTable + 1) + ", and ");
         System.out.print("" + grabLetterFromTable + (grabNumberFromTable + 2));
        }
    }
    Random random = new Random();
    char[] letters = "ABCDEFGHIJKLMNOPJRSTUVWXYZ".toCharArray();

    int chooseLetter = random.nextInt(letters[0]);

    System.out.println(chooseLetter);