Java использует данные из внешнего текстового файла - PullRequest
2 голосов
/ 16 марта 2011

У меня есть текстовый файл, содержащий первые 1000 простых чисел, и я написал метод для чтения данных из указанного текстового файла.

Я хотел бы знать, как использовать данные из этого файла и применить их к другому методу.

Что-то вроде:

read data from file;
use first eight numbers and apply to this method;

Любая помощь будет оценена.

Ответы [ 4 ]

4 голосов
/ 16 марта 2011

Считайте файл и сохраните каждое число в массиве или списке. Затем вы можете получить нужные вам числа, используя индекс массива.

3 голосов
/ 16 марта 2011

Чтение из файла простое, при условии, что у вас есть одна строка на число -

BufferedReader br = new BufferedReader(new FileReader("<your-text-file>"));
String txtNum;
while((txtNum = br.readLine()) != null)
{
   //txtNum is the number read, use it however you need
   if (txtNum.length() > 8) {
      thisMethod(txtNum.substring(0, 8));
   }
}
0 голосов
/ 16 марта 2011

Во-первых, вы должны знать, как организована ваша информация.Например, вы могли бы организовать свои 1000 первых простых nunbers следующим образом:

1
2
3
5
7...

Или так:

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

Вы можете использовать StringBuilder (или просто String), чтобы сохранитьномера вашего файла (при условии, что ваш текст похож на второй способ выше).Поскольку числа разделены тире, вы можете использовать подстроку, которая может использовать первые 8 чисел для какого-либо метода.

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

Но если ваши числа организованы как 1-й способ (по одному на строку)Вы можете сделать что-то вроде этого:

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

Если вы хотите использовать эти первые 8 чисел одновременно, вы можете просто полностью прочитать файл, а затем использовать некоторую подстроку в зависимости от способа чтения этих чисел.

0 голосов
/ 16 марта 2011

Используйте Scanner, чтобы прочитать данные из файла и сохранить каждую строку в массиве (или ArrayList) int с. Получить подмножество этого массива и передать его методу, поддерживающему аргументы переменной длины (например). Что-то вроде:

public static void main(String[] args) {
   ArrayList<Integer> primes = new ArrayList<Integer>();
   readPrimeData(new File("path/to/data"), primes);
   someMethod(primes.subList(0, 8).toArray(new Integer[0]));
}

static public boolean readPrimeData(File dataFile, ArrayList<Integer> 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[]
}

Метод someMethod также можно назвать как

someMethod(1, 2, 3, 5, 7);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...