2017-01-08 1 views
-1

Ich habe eine TXT-Datei namens fractions.txt, die einige Brüche enthält. Ich kenne die Größe der Daten nicht. Ich muss den Zähler und Nenner teilen und zwei Arrays für sie machen. Zum Beispiel sind 6/7 und 5/4 in den Bruchteilen.txt. Ich brauche zwei Arrays wie a [] und b []. Dann ist a [0] = 6, a [1] = 5, b [0] = 7 und b [1] = 4. Wie es geht?Wie werden Werte in einem Array gespeichert, nachdem split() ausgeführt wurde?

import java.util.Scanner; 
import java.io.FileInputStream; 
import java.io.PrintWriter; 
import java.io.FileOutputStream; 
import java.io.FileNotFoundException; 
import java.util.*; 
public class Fraction2 
{ 

public static void main(String[] args){ 
    Scanner inputStream = null; 
    PrintWriter outputStream = null; 
    try{ 
    inputStream = new Scanner(new FileInputStream ("fractions.txt")); 
    outputStream = new PrintWriter (new FileOutputStream("terminal.txt")); 
    } 
    catch (FileNotFoundException e){ 
    System.out.println("File not found."); 
    System.exit(0); 
    } 
    String data; 
    while (inputStream.hasNextLine()){ 
     data = inputStream.nextLine(); 
     String parts[] = data.split("/"); 

    } 


    outputStream.close(); 
    inputStream.close(); 

} 
} 
+3

Was ist das Problem mit Ihrem Code? Bitte frage nicht "* warum mein Code nicht funktioniert *" Fragen, ohne spezifisch zu sein. – Maroun

+0

unter Annahme eines Bruches pro Zeile, d. H. 6/7 an erster Stelle. Die erste Iteration gibt Ihnen Teile [0] = 6 und Teile [1] = 7. Nun, was ist das Problem? Sie können sie in Ihrer terminal.txt-Datei speichern. – Farhan

+0

Ich schreibe System.out.println (Teile [0]) nach der While-Schleife und es hat einen Fehler. – Chriseagles

Antwort

0

Verwenden Sie einfach 2 Listen

List<> numerators = new ArrayList<String>(); 
List<> denominators = new ArrayList<String>(); 
while (inputStream.hasNextLine()){ 
    data = inputStream.nextLine(); 
    String parts[] = data.split("/"); 
    numerators.add(parts[0]); 
    denominators.add(parts[1]); 
} 

Dann können Sie sie konvertieren können auf Arrays, wenn Sie müssen.

1

Wenn Sie nicht sicher sind, wie viele Brüche in der Textdatei sind, würde ich eine ArrayList verwenden, um jede Variable zu speichern.

// Initialize ArrayLists 
ArrayList<Integer> numerators = new ArrayList<Integer>(); 
ArrayList<Integer> denominators = new ArrayList<Integer>(); 

Dann, während der Daten aus der Textdatei zu lesen:

// Store Data 
numerators.add(Integer.parseInt(parts[0])); 
denominators.add(Integer.parseInt(parts[1])); 

Mit einem Arraylist, haben Sie die Möglichkeit im Wesentlichen zu speichern, so wenig oder so viele Fraktionen, wie Sie benötigen.

+0

Ich würde von dieser Praxis abraten: Sie haben eine rationale Zahl zwischen zwei Listen aufgeteilt. Das passt nicht gut in OOP - heck, du würdest sogar eine Struktur in Pascal oder C machen. – Vlasec

0

Ich würde raten, etwas Wertobjekt wie die Verwendung von:

class RationalNumber { 
    private final int numerator; 
    private final int denominator; 
    // add getters and a constructor that takes both values as parameters 
} 

Dann können Sie Instanzen dieses Typs erstellen und speichern sie in so etwas wie ArrayList.

List<RationalNumber> numbers = new ArrayList<>(); // defined outside cycle 
// ... 
numbers.add(new RationalNumber(Integer.parseInt(parts[0]), Integer.parseInt(parts[1])); 
Verwandte Themen