【问题标题】:Running text doc. in cmd with multiple classes java运行文本文档。在具有多个类java的cmd中
【发布时间】:2018-03-27 01:17:36
【问题描述】:

这个程序应该能够按名字姓氏等排序,但是当我在 cmd 中运行程序时(java Sorting_2

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

public class Sorting_2
{
public static void main(String[] args)
{
    try
    {
        String fileName = args[0];
        ArrayList<Sorting> patient = new ArrayList<Sorting>();
        Scanner scan = new Scanner ( new File (fileName) );

        while (scan.hasNext())
        {
            String line = scan.nextLine();
            String[] tokens = line.split(",");

            String lastName = tokens[0];
            String firstName = tokens[1];
            int age = Integer.parseInt(tokens[2]);
            String insuranceCompany = tokens[3];
            int roomNum = Integer.parseInt(tokens[4]);

            Sorting sorting = new Sorting(lastName, firstName, insuranceCompany, age, roomNum);
            patient.add(sorting);
        }
        String comparisonType = args [1];
        if (comparisonType.equals("lastName"))
        {
            Collections.sort(patient, new lastNameComarator());
        }
        else if (comparisonType.equals("firstName"))
        {
            Collections.sort(patient, new firstNameComparator());
        }
        else if (comparisonType.equals("age"))
        {
            Collections.sort(patient,new ageComparator());
        }
        else if (comparisonType.equals("insuranceCompany"))
        {
            Collections.sort(patient, new insuranceCompanyComparator());
        }
        else if (comparisonType.equals("roomNum"))
        {
            Collections.sort(patient, new roomNumComparator());
        }
        System.out.println();
        System.out.printf("%-13s %-17s %-9s %-10s %9s%n", "lastName", "firstName", "age", "insuranceCompany", "roomNum");

        for(Sorting c : patient)
        {
            System.out.println(c);
        }
    }
    catch (FileNotFoundException ex)
    {
        ex.printStackTrace();
    }
}
}

其他程序

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

public class Sorting
{
public String lastName;
public String firstName;
public int age;
public String insuranceCompany;
public int roomNum;


public Sorting(String l, String f, String i, int a, int r)
    {
        lastName = l;
        firstName = f;
        age = a;
        insuranceCompany = i;
        roomNum = r;

    } 


}

class lastNameComarator implements Comparator<Sorting>
{
public int compare(Sorting a, Sorting b)
{

    return a.lastName.compareToIgnoreCase(a.lastName);
}
}
class firstNameComparator implements Comparator<Sorting>
{
public int compare(Sorting a, Sorting b)
{
    return a.firstName.compareToIgnoreCase(b.firstName);
}
}
class insuranceCompanyComparator implements Comparator<Sorting>
{
public int compare(Sorting a, Sorting b)
{
    return a.insuranceCompany.compareToIgnoreCase(b.insuranceCompany);
}
}
class ageComparator implements Comparator<Sorting>
{
public int compare(Sorting a, Sorting b)
{
    if (a.age < b.age) return -1;
    else if (b.age < a.age) return 1; 
    else return 0;
}
}
class roomNumComparator implements Comparator<Sorting>
{
public int compare(Sorting a, Sorting b)
{
    if (a.roomNum < b.roomNum) return -1;
    else if (b.roomNum < a.roomNum) return 1;
    else return 0;
}
}

【问题讨论】:

  • 您通过将文件内容定向到 STDIN 来调用程序,而不是传递文件名。所以当程序执行 'args[0]' 时,没有参数,它就会死掉。

标签: java


【解决方案1】:

main 方法接受一个名为 args 的参数。这应该在程序的运行配置中定义。 Args 是一个字符串数组。您正在调用数组中的第一个值 args[0]。这需要一个长度至少有一个值的数组,args.length() 等于 1。

所以要么你必须定义参数。有关更多信息,请参见: What is "String args[]"? parameter in main method Java, https://docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html.

或者将 args[0] 替换为文件的路径,例如“relative/path/to/filename”

【讨论】:

  • 发现代码是正确的,我只需要我正在排序的 arg,这有点像你所说的将 arg 定义为(java Sorting_2 test.txt lastName)
  • @SamuelFipps 很高兴我能提供帮助。如果此答案解决了您的问题,您可以在答案左侧的投票计数器下方确认它:)
【解决方案2】:

我只是忘记了 arg (java Sorting_2 test.txt lastName) 或 (java Sorting_2 test.txt firstName) 等。

【讨论】:

    猜你喜欢
    • 2014-06-10
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多