I have an array that looks like this
static String[][][] School= new String[1000][20][5];
- In the first bracket I save the class name
- In the second I save an ID of a student
- In the third I save information about the student (his name, family name etc).
First I assign all the class names, after that I assign to every class its student ID and then I can fill in their information.
How can I do it? I tried it with for example
School[i] = "A1";
but it's not working.
EDIT: Or is there an other way to save this all 3 things? (class name, its students and its iformation)
I will suggest instead of using a 3D array, you shall create a
Student
Class that will hold all the information for a student and A Class forSchoolClass
that will hold a list of students in the class and name of class and you can maintain anArray of SchoolClass
to serve the purpose.This way you will be able to manage it better.
Hope this helps
Your array won't do what you expect it to do.
Think of the array like a 3D array, with each element a point. If you specify a single index, you're essentially telling the computer "OK, I want to assign
"A1"
to this slice of the array (in your example, you're trying to do something akin toString[][] elementAtI = "A1";
). Now that doesn't make sense, does it?To get to a single element in the array, you have to specify all three indices, much like how in 3D space you have to specify all three coordinates to locate a point:
What might be a better idea than a 3D array is objects. Packing everything into an array works, but that's not as readable as having a
SchoolClass[]
, where eachSchoolClass
has aname
and an array ofStudents
, and eachStudent
has anID
,name
, etc.Consider figure which has 3 Dimension.
So when you insert
School[0][0][0]="A1"
it means you have entered element at 0,0,0 position.From 0,0,0 this will move upto the position 1000,20,5.
You can insert like this But you have so many elements.
In 3D array elements look like
Now how to add elements in 3D array?
At Start you can directly use
This is very tedious task in your case as you want to insert details at every position. As you have
1000
records.Your array will have elements like this
NOTE:It's not recommended to use 3D array for this purpose.
Suggestion:Declare a class with three
Strings
create constructor with this three parameters and put getter and setters to get and set values viaObjects
First of all, variable fields usually start with lowercase with camel text by convention.
Secondly, arrays do not work like this. String[][][] holds {{{entry...}entry...}entry...}. The entries may contain duplicates, which makes it an unfeasible method as you will get {"3A", "1", "PersonName"} and {"3A", "1", "DifferentPersonName"} within the same array. Each array dimension is holding additional dimensions, aka {"3A", {"1", {"PersonName"}, {"DifferentPersonName"}}}, so
School[i] = "A1";
is syntax error, because you must put String[][] in String[i][][]:School[i] = {{"A1","PersonName"}};
I believe a solution here would be to use HashMaps. Repeated entries will overwrite each other. In this case, the code will be: