Welcome to the Java Programming Forums

The professional, friendly Java community. 21,500 members and growing!

The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.

>> REGISTER NOW TO START POSTING

Members have full access to the forums. Advertisements are removed for registered users.

# Thread: help needed

1. ## help needed

ok so ive to hand this question in by the end of today 19:00

Here's the Q.Declare an array of 50 student numbers and fill it with integers between 1 and 1000.
Output all elements to the screen. Check if there are duplicates and if so output the index at which these duplicates occur. e.g. Student[21] = 444 Student[33] = 444

I know my problem is in the 3rd nested loop with the intiger i,

class WS5bQ2
{
public static void main(String args[])
{
int grade[][] = new int[1][50];
for(int row=0; row<grade.length; row++)//loop to assingn values to the array
{
for(int col=0; col<50; col++)//controls the col
{
grade[row][col] = (int)(Math.random()*10000000%1000+1);
}
}
for(int row=0; row<grade.length; row++)//output array to screen
{
for(int col=0; col<50; col++)
{
System.out.print(grade[row][col]+"  ");
}
}
System.out.println("");
for(int row =0; row<grade.length; row++)//nested loop to check for matching grades
{
for(int col = 1; col <grade.length; col++)
{
int i = 0;
if(grade[row][i] == grade[row][col])
{
System.out.println("Stundent "+i+  "= "+grade[row][i]+"   Stundent "+col+"= "+grade[row][col]);
}
i++;

}//close second loop
}//close 1st loop
}//close main
}//close class

ive laso tried the 3rd nested loop this way

for(int i =0; i<=49; i++)//nested loop to check for matching grades
{
for(int col = 1; col <grade.length; col++)
{
if(grade[0][i] == grade[0][col])
{
System.out.println("Stundent "+i+  "= "+grade[0][i]+"   Stundent "+col+"= "+grade[0][col]);
}
}//close second loop
}//close 1st loop

2. ## Re: help needed

you're checking the lengths incorrectly. The .length field only returns the length for that dimension.

ex.

int[][] myMatrix = new int[5][10];
System.out.println("there are " + myMatrix.length + " rows in the matrix.");
System.out.println("there are " + myMatrix[0].length + " elements in row 0.");

I also believe that there's no need for the multi-dimension arrays to be "rectangular".
int[][] myMatrix = new int[5][];
myMatrix[0] = new int[6];
myMatrix[1] = new int[7];
System.out.println("their are " + myMatrix.length + " rows."); // 5
System.out.println("there are " + myMatrix[0].length + " elements in row 0."); // 6
System.out.println("there are " + myMatrix[1].length + " elements in row 0."); // 7

3. ## Re: help needed

i dont really know what you mean rectangle,
ive got the array to output the matches but it always matches itself with itself aswell, can anyone show me how to reslove this problem
for(int i= 1; i<=49; i++)// checking for duplicate entry's in the array and out index of duplicate
{
for(int col = 0; col <49;col++)
{
if(grade[0][col] == grade[0][i])
{
System.out.println("Stundent "+i+  "= "+grade[0][i]+"   Stundent "+col+"= "+grade[0][col]);
}
}//close second loop
}

4. ## Re: help needed

A rectangular 2 dimensional array simply means that every row has the same number of elements. ex:

1 2 3 4 5 6
2 3 4 5 6 7
3 4 5 6 7 8
1 2 3 4 5 6

this is rectangular because every row has 6 elements.

1 2 3
1 2 4 5 6 7
1 2 3
1 2 3 4
1 2 3 4 5

this isn't rectangular because there are rows with different number of elements. Anyways, the point I was trying to point out was that you were trying to get the length of the wrong thing.

for(int row =0; row<grade.length; row++)//nested loop to check for matching grades
{
[b]for(int col = 1; col <grade[row].length; col++)[/b] // this line is different
{
int i = 0;
if(grade[row][i] == grade[row][col])
{
System.out.println("Stundent "+i+  "= "+grade[row][i]+"   Stundent "+col+"= "+grade[row][col]);
}
i++;

}//close second loop
}//close 1st loop

5. ## Re: help needed

Firstly you don't don't have a 3rd nested loop it's a for statement inside nested loop, just so you realise .

Secondly you just need a statement to prevent it from running when it's comparing the same one. You can make another if statement outside it but I would change your current one to:

if(grade[row][i] == grade[row][col] && i != col)

Have you gone through this sort of stuff yet?