Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Scanner类打印纯文本文件?_Java_Binary Tree_Java.util.scanner - Fatal编程技术网

Java 如何使用Scanner类打印纯文本文件?

Java 如何使用Scanner类打印纯文本文件?,java,binary-tree,java.util.scanner,Java,Binary Tree,Java.util.scanner,我试图创建一个Scanner类,它应该输出一个包含以下信息的纯文本文件 人员姓名、地址、城市、电话号码、, 人员姓名、地址、城市、电话号码、, 人员姓名、地址、城市、电话号码、, 人员姓名、地址、城市、电话号码、 我的分隔符是逗号 每组数据必须以二叉树的形式输出。首先将名称作为根节点,然后将地址作为根节点,然后将城市作为根节点,依此类推 这是我创建的Java文件,每次只输出“用法:Java Scanner_Two phone.txt”+“文件位置”,下面没有树。谁能告诉我哪里出了问题。我还创建了

我试图创建一个Scanner类,它应该输出一个包含以下信息的纯文本文件

人员姓名、地址、城市、电话号码、, 人员姓名、地址、城市、电话号码、, 人员姓名、地址、城市、电话号码、, 人员姓名、地址、城市、电话号码、

我的分隔符是逗号

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

这是我创建的Java文件,每次只输出“用法:Java Scanner_Two phone.txt”+“文件位置”,下面没有树。谁能告诉我哪里出了问题。我还创建了一个Entry类、BinaryTreeNode类和二叉树类

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]);
}

}
如果您正在使用

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

如果你把这个信息打印出来,这意味着你要么有少于1个参数,要么有不止一个参数。您应该对此进行检查。

您所描述的问题不是Scanner类的问题,正如您在标题中所指出的,而是在处理参数时的问题。在以下代码(位于主方法中)中,我们可以看到您的程序在到达扫描仪声明之前就失败了:

if(args.length != 1) {
System.out.println("usage: java Scanner_Two Person.txt " + "file location");
System.exit(0);
}
由于这段代码正在执行,我们知道args进入main方法时包含0个或多个元素。我会疯狂地猜测你是个新手,在这种情况下,你真的应该研究如何使用它。通常,只有在通过某些命令行环境(如终端或命令提示符)执行时,才使用命令行参数。如果您使用的是IDE,则可以输入此类参数,尽管它是特定于IDE的

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

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

public static void main(String[] args) {
readFile("C:\\[filepath]\\Person.txt");
}

您将什么作为参数传递给您的程序?似乎您传入的参数太多或太少。从何处开始?从Eclipse(或其他IDE)内部还是从命令提示符?