2 Stimmen

Java Verwenden Sie Daten aus externer Textdatei

Ich habe eine Textdatei mit den ersten 1000 Primzahlen und habe eine Methode geschrieben, um die Daten aus dieser Textdatei zu lesen.

Ich möchte wissen, wie ich die Daten aus dieser Datei verwenden und auf eine andere Methode anwenden kann.

Etwas in der Art von:

Daten aus Datei lesen;
die ersten acht Zahlen verwenden und auf diese Methode anwenden;

Über jede Hilfe würde ich mich freuen.

4voto

dogbane Punkte 253146

Lesen Sie die Datei und speichern Sie jede Zahl in einem Array oder einer Liste. Sie können dann die benötigten Zahlen durch Verwendung des Index des Arrays erhalten.

3voto

d-live Punkte 7802

Das Lesen aus einer Datei ist einfach, vorausgesetzt, Sie haben für jede Zahl eine Zeile -

BufferedReader br = new BufferedReader(new FileReader(""));
String txtNum;
while((txtNum = br.readLine()) != null)
{
   //txtNum ist die gelesene Zahl, verwenden Sie sie, wie Sie möchten
   if (txtNum.length() > 8) {
      dieseMethode(txtNum.substring(0, 8));
   }
}

0 Stimmen

Vielen Dank, das ist großartig. Könnten Sie möglicherweise beraten, wie ich acht zufällige Zahlen aus der Datei auswählen würde? Vielen Dank.

0voto

Yanick Rochon Punkte 47683

Verwenden Sie Scanner, um die Daten aus der Datei zu lesen und jede Zeile in einem Array (oder ArrayList) von ints zu speichern. Holen Sie sich dann eine Teilliste dieses Arrays und übergeben Sie sie an eine Methode, die variable Argumente unterstützt (zum Beispiel). Etwas wie :

public static void main(String[] args) {
   ArrayList primes = new ArrayList();
   readPrimeData(new File("Pfad/zu/den/Daten"), primes);
   someMethod(primes.subList(0, 8).toArray(new Integer[0]));
}

static public boolean readPrimeData(File dataFile, ArrayList data) {
   boolean err = false;
   try {
      Scanner scanner = new Scanner(dataFile);
      String line;
      while (scanner.hasNext()) {
         line = scanner.nextLine();
         try {
            data.add(Integer.parseInt(line));
         } catch (NumberFormatException e) {
            e.printStackTrace();
            err = true;
         }
      }
      scanner.close();
   } catch (FileNotFoundException e) {
      e.printStackTrace();
      err = true;
   }

   return err;
}

static public void someMethod(Integer...primes) {
   // primes is Integer[]
}

Die Methode someMethod kann auch folgendermaßen aufgerufen werden

someMethod(1, 2, 3, 5, 7);

0voto

Manoel Afonso Punkte 47

Zuerst müssen Sie wissen, wie Ihre Informationen organisiert sind. Zum Beispiel könnten Sie Ihre ersten 1000 Primzahlen auf diese Weise organisiert haben:

1
2
3
5
7...

Oder auf diese Weise:

1-2-3-5-7-11...

Sie können den StringBuilder (oder einfach einen String) verwenden, um die Zahlen Ihrer Datei zu behalten (vorausgesetzt, Ihr Text ist wie oben auf die zweite Weise organisiert). Da die Zahlen durch einen Bindestrich getrennt sind, könnten Sie eine Teilzeichenfolge verwenden, die die ersten 8 Zahlen an eine Methode übergeben kann.

BufferedReader br = new BufferedReader(new FileReader("Primzahlen.txt"));
String num;
int count = 1;
while((num= br.readLine()) != null) {
      if( count <= 8 )     
        someMethod( num.subString(0, num.indexOf("-")) );
}

Aber wenn Sie Ihre Zahlen so organisieren wie auf die 1. Weise (eine Zahl pro Zeile), könnten Sie etwas Ähnliches wie dies tun:

BufferedReader br = new BufferedReader(new FileReader("Primzahlen.txt"));
String num;
int count = 1;
while((num = br.readLine()) != null) {
        if( count <= 8 )
           someMethod( num );
        num = "";
}

Wenn Sie diese ersten 8 Zahlen auf einmal verwenden möchten, können Sie einfach die Datei vollständig lesen und dann je nachdem, wie diese Zahlen gelesen werden, eine Teilzeichenfolge verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X