2014-10-14 3 views
0

Написание программы для чтения списка чисел, определение того, являются ли они основными, а затем записывать их в файл. Добавлено этот вопрос раньше .. Исправлена ​​моя логика, чтобы определить, является ли число простым. Теперь я не вижу, чтобы заставить его написать текстовый файл с именем «PrimeNumbers.txt»Чтение и запись данных в текстовый файл

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

import java.io.*; 
import java.util.Scanner; 

public class AssignFive_FileRead { 
public static void main(String[] args) throws IOException { 

int number; 
int count = 0; 
int calc = 0; 
int i = 2; 

File myFile = new File("assignment5Numbers.txt"); 
File myTargetFile = new File("PrimeNumbers.txt"); 
Scanner inputFile = new Scanner(myFile); 

System.out.println("** Checking for required files **"); 

// Check to see if file's exists 

if (!myTargetFile.exists()) { 
    System.out.println("Error: Unable to create target file!"); 
    System.exit(0); 
} else { 
    System.out.println("Target file has been created!"); 
} 

if (!myFile.exists()) { 
    System.out.println("Error: file cannot be found"); 
    System.exit(0); 
} else { 
    System.out.println("Source file has been found, starting operation..."); 
    System.out.println(); 
} 

    // Reading numbers from text file 
    while (inputFile.hasNext()) { 
    number = inputFile.nextInt(); 

    while (i <= number/2) { 
    if (number % i == 0) { 
     calc = 1; 
    } 
    i++; 
    } // End second while loop 

    if (calc != 1) {  
    count++; 
    for (int x = 0; x <= count; x++) { 
    PrintWriter outputFile = new PrintWriter("PrimeNumbers.txt"); 
    outputFile.print(number + "\t"); 
    outputFile.println("is prime"); 
    } 
    } 

    // resetting variables for next check 
    calc = 0; 
    i = 2; 

} // End first while loop 

// System.out.println("Source file has a total of " + count + " numbers"); 

System.out.println("Data has been written to files.. Operation successful!"); 

} // End main 
} // End public class 
+0

промыть и закрыть 'outputFile' ... – MadProgrammer

+0

, а также вы должны проверить, действительно Myfile существует, и если не создать один до того файла Myfile = новый файл (" assignment5Numbers.txt «); –

ответ

1
  1. decalre ваши PrintWriter outputFile вне вашего while цикла, вы собираетесь повторно использовать PrintWriter и вы хотите сохранить текущее содержимое/место в файле, так что не должно быть повторно объявлен каждый раз, когда вы разбираете другой номер. Также переименуйте его, имя не отражает того, что он делает, назовите его чем-то вроде outputWriter.

  2. Вы должны использовать как ваши входные, так и выходные потоки, это обеспечивает сброс буферов и выделение ресурсов из приложения Java. Перед тем: System.out.println("Data has been written to files.. Operation successful!"); поставил outputFile.close(); и inputFile.close();

+0

Thx, это сработало. Также я понял, что мне не нужно иметь цикл for – Chewy

Смежные вопросы