2014-09-14 4 views
-1

Работа над проектом Java для класса. Профессор хочет, чтобы мы выводили файл, который я никогда раньше не делал. Инструкции: Создайте файл program1.states.in.out и включите его в папку проекта при отправке проекта.
Этот файл НЕ должен отображаться как отображаемый вывод на шаге 3. Он состоит только из неформатированных строк данных (не разнесенных, без заголовков ...). Таким образом, выходной файл будет состоять из пятидесяти строк данных . Вам понадобится эта созданная копия для ввода снова в шаге 6. Таким образом, убедитесь, что она отформатирована правильно. Он будет выглядеть так:Java: Справка, выводимая в файл?

Texas   Austin   TX19759614Southwest  5 
New_Mexico  Santa_Fe  NM 1736931Southwest  5 
Arizona  Phoenix  AZ 4668631Southwest  5 

Это похоже на ту же структуру из его входного файла. Но я уже урезал/проанализировал это, чтобы заполнить массив State. Как мне вернуть его в этот формат, а затем вывести его в файл?

Код, используемый для обрезки/разбора из входного файла (в основном):

inputString = br1.readLine(); 
     while (inputString != null) { 
      stateName = inputString.substring(0, 15).trim(); 
      stateCapital = inputString.substring(15, 30).trim(); 
      stateAbbrev = inputString.substring(30, 32).trim(); 
      statePop = Integer.parseInt(inputString.substring(32, 40).trim()); 
      stateRegion = inputString.substring(40, 55).trim(); 
      stateRegionNum = Integer.parseInt(inputString.substring(55)); 
      Sdriver.insert(stateName, stateCapital, stateAbbrev, statePop, stateRegion, stateRegionNum); 
      inputString = br1.readLine(); // read next input line. 
     } 
     br1.close();  //Close input file being read 

И это State.class.

public class State { 
    private String stateName;  
    private String stateCapital; 
    private String stateAbbrev; 
    private int statePop; 
    private String stateRegion; 
    private int stateRegionNum; 
    public static final String HEADER_STRING = "\n%-15s %-15s %-4s %-10s %-15s %-8s\n\n"; 
    private static final String DISPLAY_STRING = "%-15s %-15s %-4s %,10d %-15s %1d"; 

    public State(String name, String capital, String abbrev, int pop, String region, int regionNum) { 
     stateName = name; 
     stateCapital = capital; 
     stateAbbrev = abbrev; 
     statePop = pop; 
     stateRegion = region; 
     stateRegionNum = regionNum; 
     }//End State 

    public void displayState(int nElems, State myState[]) { 
     System.out.print(String.format(State.HEADER_STRING, "State", "Capital", "Abbr", "Population", "Region", "Region #")); 

     for(int x = 0; x < nElems - 1; x++) { 
      System.out.println(myState[x].toString()); 
     } 
    }//End displayState 

Редактировать: Моя попытка вывести код.

String file = "src/program1.states.in.out.txt"; 
      BufferedWriter writer = new BufferedWriter(new FileWriter("src/program1.states.in.out.txt")); { 
      for(int x = 0; x < Sdriver.getnElems(); x++) { 
       writer.write(Sdriver.getState(x).toString()); 
      } 
     } 

Создал файл, но файл был пуст.

+0

Ваше чтение ввода кажется слишком сложным для меня. Сам я просто разделил каждую строку с чем-то вроде '' \ s + "'. Для вывода вы должны использовать метод displayState для создания строки, которую вы пишете в файл. Сначала попробуйте сделать это, прежде чем просить о нашей помощи. –

+0

Этот вопрос не соответствует теме, потому что вы еще не опубликовали свою попытку решить эту проблему первым, и это необходимо, если мы увидим, что вы можете делать неправильно. –

+0

Спасибо. Что делать, если вы завернули BufferedWriter в объект PrintWriter, например, называемый printWriter, и просто измените внутреннюю часть цикла for на 'printWriter.println (Sdriver.getState (x) .displayState());'? –

ответ

0

Вы смотрите, чтобы начинать в не слишком плохом месте с этим:

String file = "src/program1.states.in.out.txt"; 
    BufferedWriter writer = new BufferedWriter(new FileWriter("src/program1.states.in.out.txt")); { 
    for(int x = 0; x < Sdriver.getnElems(); x++) { 
     writer.write(Sdriver.getState(x).toString()); 
    } 
} 

Но рассмотрим вместо использования объекта PrintWriter и метод displayState(). Что-то похожее на:

PrintWriter printWriter = null; 
try { 
    String filePath = "src/program1.states.in.out.txt"; 
    writer = new BufferedWriter(new FileWriter(filePath)); 
    PrintWriter printWriter = new PrintWriter(writer); 
    for(int x = 0; x < Sdriver.getnElems(); x++) { 
     printWriter.println(Sdriver.getState(x).displayState()); 
    } 
} catch (IOException ioE) { 
    ioE.printStackTrace(); 
} finally { 
    if (printWriter != null) { 
     printWriter.close(); 
    } 
}