Разобрать вывод строки в файл - PullRequest
0 голосов
/ 13 декабря 2011

Первая часть этой «Франкенштейновской» Java прекрасно работает, однако вторая часть выводит некоторую путаницу.Таким образом, переменная результата будет моим вводом от пользователя.Мне пришлось сначала UpperCase строки, прежде чем я сделал анализ по какой-то глупой причине, это трудно, когда вы пришли из базы данных / анализа и знаете, что вы делаете что-то в считанные секунды и не получаете сообщение об ошибке ... Я дал кредит, когда заслугавнутри кода ...

myfile.txt ---> [Ljava.lang.String; @ 19821f

  import java.io.*;
/*http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split%28java.lang.String%29*/

  public class StringParser {

  public static void main (String arg[])
     throws FileNotFoundException {
String result = "eggs toast bacon bacon butter ice beer".toUpperCase();
  String[] resultU = result.split("\\s");
  String[] y = resultU;

  {
for (int x=0; x< resultU.length; x++)



    System.out.println(resultU[x]);


  /*http://www.javacoffeebreak.com/java103/java103.html#output*/

            FileOutputStream out; // declare a file output object
            PrintStream p; // declare a print stream object

            try
            {
                    // Create a new file output stream
                    // connected to "myfile.txt"
                    out = new FileOutputStream("myfile.txt");

                    // Connect print stream to the output stream
                    p = new PrintStream( out );

                    p.println (resultU);

                    p.close();
            }
            catch (Exception e)
            {
                    System.err.println ("Error writing to file");
            }
    }
}
}

Ответы [ 4 ]

2 голосов
/ 13 декабря 2011

Вы понимаете, что вы перезаписываете один и тот же файл для каждого элемента в вашем массиве?

Вы должны использовать

out = new FileOutputStream("myfile.txt", true); // appends to existing file

, а также печатать фактический элемент, а не представление Stringиз целого массива

p.println(resultU[x]);  // resultU without index prints the whole array - yuk!

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

Что-то вроде

public static void main(String[] args) {

    String result = "eggs toast bacon bacon butter ice beer".toUpperCase();

    PrintStream p = null;

    try {
        p = new PrintStream(new FileOutputStream("myfile.txt"));

        for (String s : result.split("\\s")) {
            p.println(s);
            p.flush(); // probably not necessary
        }

    } catch (Exception e) {
        e.printStackTrace(); // should really use a logger instead!
    } finally {
        try {
            p.close(); // wouldn't need this in Java 7!
        } catch (Exception e) {
        }
    }
}
0 голосов
/ 13 декабря 2011

Это "беспорядочное бессмысленное" - это местоположение String s в памяти, но это сейчас не важно.

Решение вашей проблемы таково:

try {
  FileOutputStream out = new FileOutputStream("myfile.txt", true);
  PrintStream = new PrintStream(out);

  for(String s : resultU)
    p.println(s);

  p.close();
} catch(Exception e) {
  e.printStackTrace();
}

Это заменит весь ваш цикл for.

0 голосов
/ 13 декабря 2011

Ваша строка

p.println (resultU);

печатает строковое представление самого массива, а не элементов в нем.Чтобы напечатать элементы, вам нужно пройти через массив и распечатать их по отдельности. У класса Arrays есть удобный метод, конечно, для вас.

0 голосов
/ 13 декабря 2011

Вы должны перебрать массив и записать каждый элемент один за другим.

FileOutputStream out; // declare a file output object
  PrintStream p; // declare a print stream object
  try
   {
   out = new FileOutputStream("myfile.txt");
   p = new PrintStream( out );
   for(String str:resultU)
    {
        p.println (str);
     }
   p.close();
   }
   catch (Exception e)
   {
   System.err.println ("Error writing to file");
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...