Ich arbeite an einer Klassenzuweisung. Ich muss eine Datei einlesen, die Eingabezeilen enthält. Jeder Block von drei Zeilen ist eine strukturierte Menge: Die erste ist ein Polynom, die zweite ist ein anderes Polynom, die dritte ist eine Textzeichenfolge, die die algebraische Operation für die Polynomarithmetik angibt. Ich habe mein Programm so eingestellt, dass es jede Zeile in ein Array liest und dann analysiere ich die beiden Array-Indizes, die ganze Zahlen enthalten, in meinen Polynombegriff. Ich rufe die entsprechende Funktion auf der Grundlage der dritten Zeile auf. Mein Kampf besteht darin, einen Weg zu finden, den Prozess nach jeder dritten Zeile zurückzusetzen. Hier ist der Code für meine Hauptfunktion. Ich dachte, ich würde irgendwie eine i-Schleife (k-Schleife) benutzen, aber ich kann es nicht zum Laufen bringen. Jeder Einblick oder Vorschläge sehr geschätzt.Zyklische Aufruffunktion basierend auf Segmenten des Eingangs
Beispiel Eingabe:
3 2 4 5
5 7 4 6
subtract
4 3 5 1
1 2 3 4
add
Hier ist mein Code:
public static void main(String[] args) throws IOException {
Polynomial p1 = new Polynomial();
Polynomial p2 = new Polynomial();
int lines = 0;
List<String> list = new ArrayList<String>();
try {
BufferedReader reader = new BufferedReader(new FileReader("Test.txt"));
String line=null;
while((line = reader.readLine()) != null) {
list.add(line);
lines++;
} // end while
} catch (FileNotFoundException e){
e.printStackTrace();
}
System.out.println("lines " + lines);
for (int k=0; k<lines; k++){
String[] stringArr = list.toArray(new String[0]);
System.out.println(stringArr[k+0]);
System.out.println(stringArr[k+1]);
System.out.println(stringArr[k+2]);
String[] nums1 = stringArr[k+0].split(" ");
String[] nums2 = stringArr[k+1].split(" ");
for (int i=0; i<nums1.length; i+= 2) {
p1.addTerm(Integer.parseInt(nums1[i]), Integer.parseInt(nums1[i+1]));
}
for (int i=0; i<nums2.length; i+= 2) {
p2.addTerm(Integer.parseInt(nums2[i]), Integer.parseInt(nums2[i+1]));
}
if (stringArr[k+2].equalsIgnoreCase("add")) {add(p1,p2);}
else if (stringArr[k+2].equalsIgnoreCase("subtract")) {subtract(p1,p2);}
else if(stringArr[k+2].equalsIgnoreCase("multiply")) {multiply(p1,p2);}
else {
System.out.println("Bad input");
}
nums1=null;
nums2=null;
}
}
Vielen Dank! Ich lerne, Eingaben von Dateien zu lesen, daher sind Tipps bezüglich des Scanners sehr hilfreich. –