java - 如何修改此 Java 程序以从命令行指定的文件中读取名称?

标签 java

现在我已经将此程序设置为可以在命令行中输入船名的位置,即 C:\java Proj3 "Boat 1""Boat 2""Boat 3" 并根据规范将结果打印到命令行。 相反,我想在命令行中输入类似的内容 C:\java Proj3 "C:\class\Java\boatnames.txt""C:\class\Java\results.txt" 因此参数来自指定的文件,结果打印在文本文件中而不是打印在屏幕上。我将 println 更改为 printf,但到目前为止就是这样。我删除了所有其他失败的尝试。我什至尝试创建另一个名为 createfile.java 的类,该类具有 private Formatter x;以及一些 openFile、closeFile 和 addRecords 方法,但是如果我将输出移到那里并尝试将其放入 addRecords 中,它不知道变量 i 是什么,我猜一定有一种更简单的方法不必创建 createfile 类。

这是我的代码(我没有包含其他类,因为我需要做的就是将命令行中的参数替换为命令行中 txt 文件中的参数):

import java.util.*;
import java.io.*;
import java.lang.*;
import java.swing.*;

public class Proj3 {
    public static void main(String args[]) {

            Boat[] Boats;
        char   firstChar;
        char   secondChar;
        int    i;    

        Boats = new Boat[args.length];

        for (i = 0; i < args.length; i++) {

            firstChar = args[i].toUpperCase().charAt(0);
            secondChar = args[i].toUpperCase().charAt(1);

            if ((firstChar == 'B') || (firstChar == 'C') || (firstChar ==     'N')) {
                Boats[i] = new SailBoat();
            } else {
                Boats[i] = new RaceBoat();
            }

            Boats[i].setName(args[i]);

            if ((secondChar == 'A') || (secondChar == 'E')) {
            Boats[i].goFast();
            } else {
                Boats[i].goSlow();
            }
        }


        for (i = 0; i < args.length; i++) {
            System.out.printf("Boat number " + (i + 1) + " - \n");
            System.out.printf("   ");
            Boats[i].printBoat();
            System.out.printf("   ");
            Boats[i].whatIsBoatState();
        }




    }
}

最佳答案

最简单的方法是使用现有的库来读入文件。一个非常常用的库是 apache commons-io ,其中有 FileUtils.readLines()实用方法。

import org.apache.commons.io.FileUtils;

// pass the filename is to your program on the command line

List<Sting> lines = FileUtils.readLines(new File(args[0]));
for (String line : lines) {
    // use "line" instead of args[i] in your current code
    ...
}

关于java - 如何修改此 Java 程序以从命令行指定的文件中读取名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12575118/

相关文章:

java - 易于实现的 Web SSO 解决方案?

java - 从父类调用扩展的类方法,扩展类保留父类变量的实例

java - java中的dhtmlx grid.render_table不工作

java - 删除 Android 布局和 Activity 代码中的重复项

java - Java 中变量的作用域 -- 问题

java - webdriver 单击网页中的链接

java - 制作 GImage 时出现 NullPointerException

java - 如何在 Java 中创建列表

java - Websphere 7 + EJB3 中的内存泄漏,大量 ClassMapping 实例

java - Android 上的开源 Java CORBA ORB?