2017-11-21 2 views
0

Ich mag die Anzahl der Buchstaben in einem String [][] durch Spalte, weit mein Code ist dies so zählen:Wie man die Anzahl der Buchstaben für jede Spalte in einem String [] [] zählt?

for(int j = 0 ; j<matrix[0].length ;j++){ 
     for(int i = 0 ; i< matrix.length ;i++) 
     if (Character.isLetter(matrix[j][i].charAt(j))) 
     countChar++; 
     } 
     System.out.println(countChar + "letters"); 
     return countChar; 

aber die Ausgabe der Zählungen Programm, wie viele Elemente der String zum Beispiel hat, wenn der String ist :

String [][] C = { 
    {"abc", "abcd" ,  "abcd"}, 
    {"oroeo", "kakakak" ,  "alsksjk"}, 
    {"abcdef", "asdasdasdasd", "asdasdasdasd"}, 
}; 

das Ergebnis ist 9, sollte aber 14 (Anzahl der Buchstaben durch Spalte) sein Jede Hilfe sehr apreciated ist danke!

+0

Sie versuchen, Zählen Sie die Anzahl der Zeichen in einer Spalte? –

+0

Was bedeutet Spalte, können Sie ein Beispiel geben, für einige Eingabe, was Sie erwarten, sollte die Ausgabe sein. Sie haben das Beispiel gegeben, aber erklären, wie es zählen soll. –

+0

Tut mir leid, aber ich denke, meine Antwort ist viel besser als die, die Sie derzeit angenommen haben. –

Antwort

0

Sie können eine 2D-Matrix als ein Array von Zeilen oder ein Array von Spalten definieren. Ich nehme an, Sie haben es als ein Array von Zeilen definiert und möchten nun die Werte in einer bestimmten Spalte abrufen.

So sieht Ihre Daten wie folgt aus:

abc    abcd    abcd 
oroeo   kakakak   alsksjk 
abcdef   asdasdasdasd  asdasdasdasd 

drei Reihen und drei Spalten.

zum Beispiel die Werte in der mittleren Spalte (mit dem Index 1), um die Array-Elemente erhalten müssten zu erhalten:

matrix[0][1] 
matrix[1][1] 
matrix[2][1] 

Ich glaube, Sie versuchen, die Summe der Längen aller Werte zu zählen in jeder Spalte. Das wäre so gehen:

// assume that the matrix has at least one row and thas the same number of columns in each row 
    // take the number of columns in the first row for reference 
    int numberOfColumns = matrix[0].length; 
    for(int col = 0; col < numberOfColumns; col++) { 
     int count = 0; 
     // iterate over all the rows 
     for(String[] row : matrix) { 
      // count the length of the element in position col of this row 
      count += row[col].length(); 
     } 
     System.out.printf("%s characters in column %s", count, col); 
    } 
+0

Sie haben Recht, ich habe Ihre Antwort nicht entschuldigt! und ja es ist die bessere Wahl, da es jede Spalte wirft und die Charaktere für jeden von ihnen zählt! – TheVonWaff

0
int n = 0; 
// iterate row by row 
for (int i = 0; i < C.length; i++) { 
    n += C[i][0].length(); 
    // get the string at index 0 (or 1 or 2.. whichever you want) of the array and append its length 
    // if you expect the string to contain numbers, then 
    // run a for-loop on the string and check if its a letter 
} 
System.out.println(n); 
0

Versuchen unter dem Problem mit dem for-Schleife ist, für die das nicht. von Iterationen auf die Größe Ihrer Matrix beschränkt:

for(int i = 0 ; i<C[0].length ;i++) { 
       String matrixElement = C[i][0]; 
       System.out.println(matrixElement); 
       for(int k =0 ;k < matrixElement.length();k++) 
       if (Character.isLetter(matrixElement.charAt(k))) 
        countChar++; 
     } 
+0

danke dein Vorschlag hat mein Problem gelöst! – TheVonWaff

+0

Dank freundlicherweise akzeptieren die ans, wenn das geholfen hat – Ravik

0

Bitte Format aus Ihrem Code und die Schleife auffrischen:

private static int countByColumn(String[][] matrix, int column) { 
    if (column < 0) 
     return 0; // Or throw exception 

    int countChar = 0; 

    for (String[] line : matrix) { 
     //DONE: jagged array: it may appear that the line is too short 
     if (line.length <= column) 
     continue; 

     String item = line[column]; 

     for (int i = 0; i < item.length; ++i) 
     if (Character.isLetter(item.charAt(i))) 
      countChar += 1; 
    } 

    return countChar; 
    } 

Test:

// 14 
    int test = countByColumn(C, 0); 
Verwandte Themen