2010-11-26 16 views
0

Ich habe das folgende zweidimensionale Array in meinem Java-Programm.Zweidimensionales Array in Java schreiben

Integer[][] arrayOfSets = { 
     {1,2,5,6,9,10}, 
     {9,10,11,12}, 
     {1,2,3,4}, 
     {3,5,6,7,8}, 
     {9,10,11,12}, 
     {4,8}, 
}; 

Kann mir jemand zeigen, den Code auf, wie das Programm dynamisch zu machen, wo das Programm den Benutzer auffordert, einzugeben sollte die Zeilennummer und Spaltennummer, das heißt, wie viele Felder die zweidimensionale Anordnung halten und dann fragt der Benutzer für wie groß jedes Array und was sind die Zahlen, die jedes Array halten sollte? Vielen Dank im Voraus.

Dies ist, was ich versucht habe, so weit:

System.out.println("HOw many sets arrays would you like"); 
    int numArrays=sc.nextInt(); 
    Integer [][] arrayName = new Integer[numArrays][]; 
    for(int i=0;i<arrayName.length;i++){ 
     System.out.println("enter the size of the array number"+i); 
     int sizeArray=sc.nextInt(); 
     for(int k=0;k<sizeArray;k++){ 
      System.out.println("enter element"); 
      int e=sc.nextInt(); 
      arrayName[i][k]=e; 
     } 

    } 

dieses Recht sieht? Danke für die Hilfe im Voraus.

Ok Ich habe meinen Kabeljau wieder geändert. Folgendes ist, was ich jetzt habe:

System.out.print ("Wie viele Arrays möchten Sie?"); int numSets = sc.nextInt(); Integer [] [] Ergebnis = new Ganzzahl [numSets] [];

for (int k=0; k< numSets; k++){ 
    System.out.println("Enter the size of the array"); 
    int setSize = sc.nextInt(); 

    Integer[] row = new Integer[setSize]; 
    for (int m=0; m< setSize; m++){ 
     System.out.println("enter element: "); 
     row[m] = sc.nextInt(); 
    } 
    result[k] = row; 
} 
+0

Bitte lesen Sie meinen Code und lassen Sie mich wissen, wenn das korrekt ist. Vielen Dank. – sap

+0

Eine Beobachtung: Java unterstützt echte mehrdimensionale Arrays nicht; Vielmehr unterstützt es eindimensionale Arrays, wobei jedes Element selbst ein anderes eindimensionales Array sein kann. Der Unterschied ist die Art und Weise, wie Speicher zugewiesen wird, wobei sich 'a [i] [j]' von 'a [i, j]' unterscheidet. –

+0

'Sieht das richtig aus?' Ich weiß nicht, welche Fehler bekommen Sie? – Falmarri

Antwort

1

Sie nur den Benutzer für die anfänglichen Array-Größen aufgefordert, dann initialisieren Sie das Array.

import java.util.Scanner; 
public class blah { 
    public static void main(String[] args) { 
     Scanner s = new Scanner(System.in); 
     System.out.println("How Many Rows?"); 
     int rows = s.nextInt(); 
     System.out.println("How Many Colums?"); 
     int cols = s.nextInt(); 
     int [][] arrayOfSets = new int [rows] [cols]; 
    } 
} 
1

Hier ist eine Beispielfunktion Sie anpassen können:

Integer[][] createSampleArray() 
{ 
     final int N1 = 5; 
     Random r = new Random(); 
     Integer[][] result = new Integer[N1][]; 
     for (int i = 0; i < N1; ++i) 
     { 
      final int N2 = r.nextInt(); 
      Integer[] row = new Integer[N2]; 
      for (int j = 0; j < N2; ++j) 
      { 
       row[j] = r.nextInt(); 
      } 
      result[i] = row; 
     } 
     return result; 
} 

Aha, Ihr Problem ist du bist n ot kein 1-D-Arrays zu schaffen, in die Elemente zu setzen:

Integer [][] arrayName = new Integer[numArrays][]; 
    for(int i=0;i<arrayName.length;i++){ 
     System.out.println("enter the size of the array number"+i); 
     int sizeArray=sc.nextInt(); 
     for(int k=0;k<sizeArray;k++){ 
      System.out.println("enter element"); 
      int e=sc.nextInt(); 
      arrayName[i][k]=e; 
     } 

    } 

Sie arrayName[i][k] nicht zuordnen können, bis Sie arrayName[i] zuerst für jede Zeile zuweisen:

arrayName[i] = new Integer[sizeArray];

+0

groß geschrieben. Ich danke dir sehr. – sap

+0

@ user491753: die übliche Antwort, wenn Sie eine Antwort mögen, ist, sie zu verbessern und/oder anzunehmen .... –

+0

Ich habe keine Idee, wie man das macht. Ich frage weiter Leute, mir zu sagen, wie man das macht, aber niemand antwortet .... – sap

4

Was Sie haben, ist fast richtig. Dies ist:

Integer [][] arrayName = new Integer[numArrays][]; 

erstellt die erste Dimension, aber Sie müssen auch die einzelnen zweiten Dimensionen erstellen. Nachdem Sie in der Größe der einzelnen Array lesen:

int sizeArray=sc.nextInt(); 

müssen Sie die entsprechenden Array erstellen:

arrayName[i] = new Integer[sizeArray]; 
0

@casablanca Antwort perfekt ist. Sie müssen das Objekt der Klasse 'Integer' am Ende erstellen

for(int j=0; j < arrayname[i].length; j++) 
    arrayname[i][j] = new Integer(int_value); 
Verwandte Themen