int [] wronglist = new int [incorrect];   
			
			
for (int i = 0; i < 6; i++){
				
   for (int j = 0; j < i; j++){
					
      if (studentArray[i] != ansArray[i])
						
          wronglist[i] = (j+1);

ok i'm trying to write a program that figures out what number did the user got wrong on a test.

for example, the user inputs 6 letters for 6 questions on a multiple choice test.
the program have find out which number they got wrong if any.

studentArray is the student's answers array and ansArray is the correct answers.
i am very confused on the logic right now.

what i am trying to do is if one the answers does not match, then that index will be added to 1, and be added to a new array (wronglist). the code is wrong, but i can't figure out how to fix it.

for (int i = 0; i < 6; i++){
				
   if (studentArray[i] != ansArray[i])
					
      for(int j = 0; j < incorrect; j++){
						
          wronglist[j] = (i+1);

ok here is a better solution, i think. i figure since j will be only affected if the first loop finds a wrong answer, but since j will be incremented until it hits its limited is a problem.

Edited 6 Years Ago by plasticfood: n/a

I dont get your question completely, but what if it is done differently like:

int wrong=0;
int index=0;

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


if (studentArray != ansArray)
{
wronglist[index]=wrong;
wrong++;
index++;
}

See if it's works.

i think your code is trying to find out how many questions that the user got wrong. i'm trying to find out which numbers specially that they got wrong.

ok here's what i got today. i already wrote a part that calculates the number of wrong answers that the user has.

i used that variable(incorrect), and put it in the array index size.

int [] wronglist = new int [incorrect];

i wrote this part today, but it didn't work. when i print wronglist, it gives me a bunch of crap.

int j = 0;
			
int [] wronglist = new int [incorrect];
			
for (int i = 0; i < 6; i++){
				
if (studentArray[i] != ansArray[i]){
					
wronglist[j] = (i + 1);
					
j++;
					
					
}
											
					
}

Edited 6 Years Ago by plasticfood: n/a

I@14318bb
[I@14318bb
[I@14318bb

stuff like this...

here is the part that prints the array:

else if(result && correct < 6){
			
System.out.println("the questions you got wrong: ");
			
			
int [] wrong1 = new int [incorrect];
			
wrong1 = questionsMissed(studentAs, answers, incorrect); 
//method leads back to the part where it figures which numbers are wrong//
			
for (int i = 0; i < incorrect; i++){
				
System.out.println(wrong1);
			
}
		
}

Edited 6 Years Ago by plasticfood: n/a

OK, you're trying to print the whole array on line 12, so all you get is the internal pointer to that array. I guess you intended to say System.out.println(wrong1); ?

Or to see the whole array, use the Arrays.toString() method to print out the elements on one line enclosed in []s

my program is giving me an out of bounds error if i fail the test.

else{
			System.out.println("you've failed");
			
			
			System.out.println("the questions you got wrong: ");
			int [] wronglist = new int [incorrect];
			wronglist = questionsMissed(studentAs, answers, incorrect);
			for (int i = 0; i < incorrect; i++){
			System.out.println(wronglist[i]);
			}


		}

the error is pointing at
wronglist[j] = (i+1);

if i get more than 3 questions wrong, then the error would pop.

i indented the System.out.print after the for loop, and still gets the error.

even if i get 1 question wrong, it would give me:

6 //number that i actually got wrong.
0
0
0
0
0

if i get 3 wrong, then it'll print correctly,

Edited 6 Years Ago by plasticfood: n/a

Without the current version of all the relevant code there's nothing that I can do here. Also, I'm about to go out, so I'll be offline till tomorrow. Just debug it one step at a time - put loads of print statements into each step of the code until one of them prints out a wrong/unexpected value. Never assume you don't need to print a value because you know what it is - if your understanding of the code was 100% perfect it would work, wouldn't it?
It may be tedious, but it always works. Good luck. J

This question has already been answered. Start a new discussion instead.