Ich versuche, ein 2D-Array mit for-Schleifen neu anzuordnen. Die erste generateSong() -Methode erstellt das Array mit zufälligen Doppelungen und funktioniert gut. Dann habe ich die simulateSong() Methode. Sein Zweck besteht darin, die Zeilen aus dem Array generateSong() zu übernehmen und sie als Spalten neu zu drucken, beginnend mit dem unteren.Neuordnen von 2D-Array-Zeilen und -Spalten
import java.util.concurrent.ThreadLocalRandom;
public class Guitar {
private int strings;
private int chords;
private double[][] song;
public Guitar(int mstrings, int mchords) {
this.strings = mstrings;
this.chords = mchords;
song = new double[mstrings][mchords];
}
public void generateSong() {
for (int i = 0; i < song.length; i++) {
for (int j = 0; j < song[i].length; j++) {
song[i][j] = ThreadLocalRandom.current().nextDouble(27.5, 4186);
System.out.printf(" %.2f",song[i][j]);
}
System.out.println();
}
}
public void simulateSong() throws InterruptedException {
System.out.println("\nGuitar.simualateSong() ");
for(int i = song.length-1; i >= 0; i--) {
for(int j = song[i].length-1; j >= 0; j--) {
song[i][j] = song[i][0];
System.out.printf(" %.2f",song[i][j]);
}
System.out.println();
}
}
}
Die Anzahl der Zeilen und Spalten wird durch Befehlszeilenargumente in der Hauptmethode festgelegt.
public class Songwriter {
public static void main(String[] args) throws InterruptedException {
System.out.println("Guitar(): Generated new guitar with " + args[0] + " strings. Song length is " + args[1] + " chords.");
String args0 = args[0];
int strings = Integer.parseInt(args0);
String args1 = args[1];
int chords = Integer.parseInt(args1);
Guitar guitarObj1 = new Guitar(strings, chords);
guitarObj1.generateSong();
guitarObj1.simulateSong();
}
}
Also letztendlich, was ich versuche, es zu tun ist, so dass die Reihen nach rechts sind jetzt als Spalten von oben nach unten zu lesen lesen ursprünglich links. Hier ist die beabsichtigte Ausgabe mit 3 Zeilen und 4 Spalten, die als Befehlszeilenargumente definiert sind.
Guitar(): Generated new guitar with 3 strings. Song length is 4 chords.
2538.83 2269.30 1128.09 3419.77
2356.74 2530.88 2466.83 3025.77
3898.32 3804.22 3613.94 337.93
Guitar.simualateSong()
3898.32 2356.74 2538.83
3804.22 2530.88 2269.30
3613.94 2466.83 1128.09
337.93 3025.77 3419.77
Und mit dem Code, den ich derzeit habe, ist dies die Ausgabe, die ich bekomme.
Ich weiß, dass das einzige Problem (s) in den for-Schleifen der Methode simulateSong() liegt. Wie Sie sehen können, ist meine Leistung knapp, aber keine Zigarre.
Diese '0' klingt hier wie ein Fehler: song [i] [j] = song [i] [0]; –
Ich weiß, dass die 0 nicht dorthin gehen sollte, aber es ist so nah, wie ich es alleine geschafft habe, also habe ich es geschrieben – seventeenhundred
Danke für die Antworten. Es funktioniert jetzt korrekt. – seventeenhundred