如何获得算术测验的成绩?这类似于使用ArrayList的多项选择(MCQS)吗?我的代码出了什么问题?



在这个问题中,有一个单独的问题,问题,选项,答案。用户看到了问题及其四个选项,并将输入答案。答案数组将与键阵列进行比较,哪个选项为true Display正确答案

可以在单行上输入它们,例如,34 7 13 100 81 3 9 10 321 12可能是10个问题测验的关键

在此代码中,我只有2个问题和2个键和8个选项4,每个问题

 package p16;
     import java.util.ArrayList;
     import java.util.Scanner;
     public class P16 {
     public static void main(String[] args) {
    // TODO code application logic here
     ArrayList<String> items = new ArrayList<String>();
      int C=0,w=0;
     items.add("What is your id");
     items.add(1, "what is your uni");
     ArrayList<String> key = new ArrayList<String>();
     key.add("2");
     key.add("2");
     ArrayList<String> Options = new ArrayList<String>();
     Options.add("1");
     Options.add("2");
     Options.add("3");
     Options.add("4");
     Options.add("1");
     Options.add("2");
     Options.add("3");
     Options.add("4");
     ArrayList<String> Answer = new ArrayList<String>();
     for(int i=0;i<2;i++)
     {
      System.out.println("items(i)");
       for(int k=0;k<12;k+=4)
     {
      Options.get(k);
      Options.get(k+1);
      Options.get(k+2);
      Options.get(k+3);
      }
      System.out.print("Enter :" );
      Scanner S=new Scanner(System.in);
       int a = S.nextInt();      
      }
       for(int j = 0;j<2;j++)
      {
        if(Answer.get(j).equals(key.get(j)))
        {C++;
                }
       else
       {w++;
       }}}

输出

     run:
     items(i)
     Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 8, Size: 8
     at java.util.ArrayList.RangeCheck(ArrayList.java:547)
     at java.util.ArrayList.get(ArrayList.java:322)
     at p16.P16.main(P16.java:61)
     Java Result: 1

建立成功(总时间:13秒)

在我们到达代码之前,这里有一个过度骑行的问题:您正在尝试重复使用多项选择算法,要求选项编号,但是您要问的问题是开放的 - 最终的文字问题。例如"你叫什么名字?"。您不能将多选择方法用于此类问题。因此,首先要非常清楚地确定您要问的问题以及如何使用答案。


此代码有很多问题。看来您尝试采用类似的程序并更改它,但是您尚未理解原始程序。我的强烈建议:重新开始。将问题分解为单独的步骤,在尝试整体运行程序之前测试每个步骤。

错误:

错误1:您从用户获得答案

int a = S.nextInt();  

,但切勿使用该变量。您需要用"一个"值做点事。请参阅下一个错误。

错误2:您有一个称为答案的数组列表,但从未在其中放置任何值。我怀疑您的意图是收集一组答案并将其放在列表中,但您还没有这样做。

修改您的代码以将A的值放入答案列表中。

错误3:您有此代码

 for(int k=0;k<12;k+=4)
 {
    Options.get(k);
    Options.get(k+1);
    Options.get(k+2);
    Options.get(k+3);
 }

它获得了价值,但对它们没有任何作用,因此没有目的。您的程序当前正在失败。您已将8个值放入选项数组(索引0到7)中,但是允许K高于7。

但是:正如我所说,您没有理由拥有此代码,因为它当前所示。你为什么要打电话

  Options.get(k)

您不使用结果。

错误4:您不打印结果。

错误5:您从字面上打印"项目(i)",我的猜测是您打算

System.out.println("items(" + i + ")" + items(i));

推荐动作:

将问题分为两个步骤:

  1. 从用户中检索答案,将它们存储在答案列表中。通过打印列表的内容来验证这一点。

  2. 将答案列表与预期答案进行比较(我想这是关键的目的)。打印结果。

最新更新