0

我正在尝试创建一个扫描器类,它应该输出一个包含以下信息的纯文本文件;

人名,地址,城市,电话号码,人名,地址,城市,电话号码,人名,地址,城市,电话号码,人名,地址,城市,电话号码,

我的分隔符是逗号。

每组数据都必须以二叉树的形式输出。首先以名称作为根节点,然后地址作为根节点,然后城市作为根节点,依此类推。

这是我创建的 Java 文件,它每次只输出“用法:java Scanner_Two phone.txt”+“文件位置”,下面没有树。谁能告诉我我哪里出错了。我还创建了一个 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]);
}

}
4

2 回答 2

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 个元素进入 main 方法。我将大胆地猜测您是新手,在这种情况下,您应该真正研究如何使用命令行参数。通常,仅当您通过某些命令行环境(例如终端或命令提示符)执行时才使用命令行参数。如果您使用的是 IDE,则可以输入此类参数,尽管它是特定于 IDE 的。

如果您具体告诉我们您是如何执行代码的,并且如果您通过命令行执行,您使用的特定命令,我可以提供更详细的答案。

使用硬编码的 main 方法比学习命令行环境更容易,并且更便于重复测试:

public static void main(String[] args) {
readFile("C:\\[filepath]\\Person.txt");
}
于 2013-05-06T20:15:29.797 回答
0

如果您正在使用

if(args.length != 1)
 {           
     System.out.println("usage: java Scanner_Two Person.txt " + "file location");    
     System.exit(0);    
 }    

并且您实际打印出此消息,这意味着您的参数少于 1 个或多个参数。你应该检查一下。

于 2013-05-06T19:35:30.923 回答