我正在尝试创建一个扫描器类,它应该输出一个包含以下信息的纯文本文件;
PersonName,Address,City,Phone_Number, PersonName,Address,City,Phone_Number, PersonName,Address,City,Phone_Number, PersonName,Address,City,Phone_Number,
我的分隔符是逗号。
每组数据必须以二叉树的形式输出。首先使用Name作为rootnode,然后将地址作为rootnode,然后将城市作为rootnode,依此类推。
这是我创建的Java文件,它每次只输出“usage:java Scanner_Two telephone.txt”+“file location”,下面没有树。任何人都可以告诉我哪里出错了。我已经创建了一个Entry类,BinaryTreeNode类和Binary Tree类。
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class Scanner_Two
{
private static void readFile(String TreeName)
{
try {
// Scanner input = new Scanner (new File("telephone.txt")).useDelimiter("\\s*,\\s*");
Scanner scanned = new Scanner(new File(TreeName));
scanned.useDelimiter
(System.getProperty("line.separator"));
while (scanned.hasNext())
{
parseLine(scanned.next());
}
scanned.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
private static void parseLine(String line)
{
Scanner lineScanner = new Scanner(line);
lineScanner.useDelimiter("\\s*,\\s*");
String rootnode = lineScanner.next();
String bone = lineScanner.next();
String btwo = lineScanner.next();
String bthree = lineScanner.next();
System.out.println("Name: " + rootnode + " Address: " + bone + ", City: " + btwo + ", Telephone Number: " + bthree);
}
public static void main(String[] args)
{
if(args.length != 1)
{
System.out.println("usage: java Scanner_Two Person.txt " + "file location");
System.exit(0);
}
readFile(args[0]);
}
}
答案 0 :(得分:0)
如果您正在使用
if(args.length != 1)
{
System.out.println("usage: java Scanner_Two Person.txt " + "file location");
System.exit(0);
}
并且您实际打印出此消息,这意味着您要么少于1个参数,要么有多个参数。你应该检查一下。
答案 1 :(得分:0)
您所描述的问题不是Scanner类的问题,正如您在标题中指出的那样,但实际上是在处理参数时。在下面的代码中,(位于main方法中)我们可以看到你的程序在遇到Scanner声明之前就失败了:
if(args.length != 1) {
System.out.println("usage: java Scanner_Two Person.txt " + "file location");
System.exit(0);
}
由于此代码正在执行,我们知道args进入主方法时使用0或多于1个元素。我将采取疯狂的摇摆,并猜测你是一个新手,在这种情况下你应该真正研究如何使用command line arguments。通常,只有在通过某些命令行环境(例如终端或命令提示符)执行时才使用命令行参数。如果您使用的是IDE,则可以输入这些参数,尽管它是特定于IDE的。
如果您具体告诉我们您是如何执行代码的,并且,如果您通过命令行执行此操作,您可以提供更详细的答案。
比学习命令行环境更容易,并且更方便重复测试,将使用硬编码的主方法:
public static void main(String[] args) {
readFile("C:\\[filepath]\\Person.txt");
}