当前位置: 首页 > 知识库问答 >
问题:

Java:获取索引越界异常

宗鸿博
2023-03-14

在Java中构建汇编程序:我试图将用户的输入读入名为varraylist。如果用户输入的指令与string-arraytable中的一个匹配,那么相应的操作码将被计算出来并输出到一个文本文件中。

但是,在输入nop指令并尝试添加另一条指令后,我得到了一个索引越界异常。

//Array of instructions 
    String table[] = {"LI", " MALSI", "MAHSI", "MSLSI", "MSHSI", "MALSL", "MAHSL",
        "MSLSL", "MSHSL", "NOP", "A", "AH", "AHS", "AND", "BCW", "CLZ", "MAX", "MIN",
        "MSGN", "MPYU", "OR", "POPCNTH", "ROT", "ROTW", "SHLHI", "SFH", "SFW", "SFHS", "XOR "};
    //Array of binary values of the instructions
    String table2[] = {"0", "10000", "10001", "10010", "10011", "10100", "10101",
        "10110", "10111", "1100000000000000000000000", "1100000001", "1100000010", "1100000011",
        "1100000100", "1100000101", "1100000110", "1100000111", "1100001000", "1100001001",
        "1100001010", "1100001011", "1100001100", "1100001101", "1100001110", "1100001111",
        "1100010000", "1100010001", "1100010010", "1100010011"};
    // TODO code application logic here
    Scanner s = new Scanner(System.in);
    String ins = "";
    String fileName = "outfile.txt";
    System.out.println("Please enter MISP function, enter Q to Quit: ");
    boolean q = true;
    String op = "";
    int c = 0;
    String array[] = new String[64];

    //Loop to keep accepting userinput
    while (q) {
        //accepts the user input 
        ins = s.nextLine();
        //arraylist to hold user input 
        List<String> v = new ArrayList<String>();
        //adds the user input to the arraylist 
        v.add(ins);//user input to nop opcode 
        if (v.get(0).toUpperCase().equals("NOP")) {
            op = "1100000000000000000000000";
        } else if (v.get(1).toUpperCase().equals("LI"))//li opcode 
        {
            String p[] = v[1].split(",", 1);
            op = "0";
            op += toBinary(p[0], 3);
            op += toBinary(p[1], 16);
            op += toBinary(p[2], 5);

如果你们能帮忙,我会很感激的。

共有1个答案

关苗宣
2023-03-14

这个循环永远不会结束。

while (q)
 类似资料:
  • 这是我的代码: 该程序的目的是要求用户输入一个字符串,然后统计字符串中每个字符的使用次数。 当我去编译程序时,它工作正常。当我运行程序时,我可以在弹出框中输入字符串,但是在我提交字符串并按确定后,我得到一个错误,说 我不完全确定问题是什么或如何解决。

  • 问题内容: 在我的游戏代码中,我尝试添加一张手牌。一旦我做完了,我的数组就超出了范围。一切看起来都不错,但也许我缺少了一些东西。 仅供参考,一个和两个是Player实例。来自Main类的相关代码(对格式感到抱歉。我很想将其传输到Stack Overflow): 卡类: 玩家等级: 问题答案: 问题出在你的循环上 没有其他任何值可设置,因此此循环不断循环,直到所有玩家拥有超过52张牌为止。一旦某人拥

  • 我一直在四处寻找是否有任何东西可以帮助我,但我不太了解人们的回答,任何我所了解的似乎都不能解决问题!所以基本上正如标题所说,我得到了一个数组索引越界异常,但我不知道为什么。非常感谢任何帮助。 代码:

  • 这段代码是关于一个水罐车游荡在一个环境中寻找有任务的水站。 试图通过访问点的数组列表进行递增,但每次运行代码时,我都得到一个“indexoutofboundsexception”,但其索引不同,而且大小总是与索引相同,所以我非常困惑。中断程序的索引/大小看起来是随机变化的。 示例错误:线程“main”java.lang.IndexOutOfBoundsException:Index:5,SIZE:

  • 我应该写一个Java程序,包含给一个矩阵赋值,并递归打印一个矩阵的值。我试过这段代码,但每次输入时,只需少输入一次,然后给出索引出边框异常: 我还尝试将1加到number中,并传递函数number-1而不是n,然后异常变为: 您认为我的递归代码是问题所在还是我将它传递给方法的方式?

  • 这似乎微不足道,但也许我对向量的理解并不是它应该是的。我在这段代码上得到[java.lang.ArrayIndexOutOfBoundsException:Array index out of range:1]。错误发生在第3行。既然look是基于向量的大小,那么数组怎么会越界呢? 方法“getChangeSets()”返回一个列表。该列表最初是作为向量创建的。