繁体   English   中英

用扫描仪读取Java文件

[英]Java read file with scanner

我有这段代码,其中包含一些用于创建文件,将数据添加到文件然后使用扫描仪读取文件的方法。 我的问题是我希望它一次运行我的三个方法,但是它在第二个方法处停止并且不使用readFile()方法读取文件

createFile();
addResponses(file);
readFile(file);

我不能同时运行这三个。 它不读取文件。 但是如果我像这样取消其他方法

//createFile();
//addResponses(file);
readFile(file);

然后,读取文件方法起作用。

我希望你确实了解我的问题。 我的代码有问题吗?

import java.io.*;
import java.util.Formatter;
import java.util.Scanner;
import javax.swing.JOptionPane;


public class Main {

static Formatter f;
static String sträng = " ";
static BufferedWriter output;

static File file;
static int nummer = 1;
static int counter = 0;
static private StringBuffer strBuff;
static InputStream is;
static FileWriter fw;

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws Exception {

    createFile();
    addResponses(file);
    readFile(file);

}

public static int addResponse() {

    if (nummer == 6) {
        try {
            output.close();
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
        System.exit(0);
    }

sträng = JOptionPane.showInputDialog("Numbers 1-5 to number " + nummer");

    try {
        return Integer.parseInt(sträng);

    } catch (NumberFormatException f) {
        return 6;

    }

}

public static File createFile() {

    try {
        file = new File("numbers.txt");

        f = new Formatter(file);
        f.close();

    } catch (SecurityException se) {
        System.err.println("You dont have write access to this file");
        System.exit(1);
    } catch (Exception ex) {

        System.err.println("Error opening or creating file");
        System.exit(1);

    }

    return file;
}

public static void readFile(File x) {

    try {
        x = new File("numbers.txt");
        Scanner in = new Scanner(x);
        while (in.hasNextLine()) {

            System.out.println(in.nextLine());
        }

        in.close();

    } catch (Exception e) {

        System.out.println(e.getMessage());
        e.printStackTrace();
    }

 }

 public static void addResponses(File f) throws IOException {

    try {
        fw = new FileWriter(f, true);
        output = new BufferedWriter(fw);
        int x = addResponse();
        if (nummer == 1) {

        output.write(String.format("%s%10s\n", "Rating", "    Frequency"));
        }

        while (x != -1) {
            if (x > 0 && x < 6) {
                output.write(String.format("%s%10s\n", nummer, sträng));
                nummer++;
            } else {
  JOptionPane.showMessageDialog(null, "Input only numbers between 1-5");
            }

            x = addResponse();
        }

        output.close();
    } catch (IOException io) {
        JOptionPane.showMessageDialog(null, "Wrong");
    }

}


}

在玩完代码之后,我发现在您的addResponse()方法中,您已经添加了System.exit(0);。 因此baiscally程序终止了。 我已将其更改为返回-1,并且它似乎正在工作。

顺便说一句,这是一个非常糟糕的编码实践,每种方法都应该独立于其他方法来做。 在您的情况下,所有事情都是如此整数化,很难根除问题。 我建议您查看一些编码约定。

这是addResponse()方法应如何工作的:

public static File createFile() {

    try {
        file = new File("numbers.txt");

        f = new Formatter(file);
        f.close();

    } catch (SecurityException se) {
        System.err.println("You dont have write access to this file");
        System.exit(1);
    } catch (Exception ex) {

        System.err.println("Error opening or creating file");
        System.exit(1);

    }

    return file;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM