0

次の情報を含むプレーンテキストファイルを出力することになっているスキャナークラスを作成しようとしています。

PersonName, Address, City, Phone_Number, PersonName, Address, City, Phone_Number, PersonName, アドレス, City, Phone_Number, PersonName, Address, City, Phone_Number,

私の区切り文字はコンマです。

データの各セットは、バイナリ ツリーの形式で出力する必要があります。名前を最初にルートノードとして、次に住所をルートノードとして、次に市区町村をルートノードとして、というように続きます。

これは私が作成した Java ファイルであり、「usage: java Scanner_Two telephone.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

使用している場合

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 に答える
0

あなたが説明している問題は、タイトルで示したように Scanner クラスの問題ではなく、実際には引数の処理の問題です。次のコード (メイン メソッド内にあります) では、プログラムが 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 に答える