7

ですから、私は比較的単純な「ファイルの読み取り」プログラムであるとはいえ、コーディングに没頭しています。コンパイルエラーがたくさん発生しているので、一度に1行ずつコンパイルして、どこに行き詰まっているかを確認し始めました。これが私が今のところいるところです:

import java.nio.file.*;
import java.io.*;
import java.nio.file.attribute.*;
import java.nio.channels.FileChannel;
import java.nio.ByteBuffer;
import static java.nio.file.StandardOpenOption.*;
import java.util.Scanner;
import java.text.*;
//
public class ReadStateFile
{
    Scanner kb = new Scanner(System.in);
    String fileName;     /* everything through here compiles */
    System.out.print("Enter the file to use: ");
}

注:これは、別のクラスのメソッドから呼び出されるコンストラクターの最初の3行です。コンストラクターの残りの部分は下に続きます...もちろん、上の2番目の中括弧なしで...

fileName = kb.nextLine();
Path file = Paths.get(fileName);
//
final String ID_FORMAT = "000";
final String NAME_FORMAT = "     ";
final int NAME_LENGTH = NAME_FORMAT.length();
final String HOME_STATE = "WI";
final String BALANCE_FORMAT = "0000.00";
String delimiter = ",";
String s = ID_FORMAT + delimiter + NAME_FORMAT + delimiter + HOME_STATE + delimiter + BALANCE_FORMAT + System.getProperty("line.separator");
final int RECSIZE = s.length();
//
byte data[]=s.getBytes();
final String EMPTY_ACCT = "000";
String[] array = new String[4];
double balance;
double total = 0;
}

コンパイルすると、次のようになります。

E:\java\bin>javac ReadStateFile.java
ReadStateFile.java:20: error: <identifier> expected
        System.out.print("Enter the file to use: ");
                        ^
ReadStateFile.java:20: error: illegal start of type
        System.out.print("Enter the file to use: ");
                         ^
2 errors

E:\java\bin>

一体何が欠けているのですか?誰かが私にスタックトレースを生成するためのコードスニペットを撃つことができますか?私はJavaのドキュメントを読んで混乱しましたが、JavaTutotrialsにはインデックス付きキーワードとして「スタック」さえありません。ふむ

4

2 に答える 2

8

クラスの属性/メソッドを宣言している間は、メソッドを使用できません。

public class ReadStateFile
{
    Scanner kb = new Scanner(System.in);
    String fileName;     /* everything through here compiles */
    System.out.print("Enter the file to use: "); //wrong!
}

コードは次のようになります

public class ReadStateFile
{
    Scanner kb = new Scanner(System.in);
    String fileName;     /* everything through here compiles */

    public void someMethod() {
        System.out.print("Enter the file to use: "); //good!
    }
}

編集:あなたのコメントに基づいて、これはあなたが達成しようとしていることです:

public class ReadStateFile
{

    public ReadStateFile() {
        Scanner kb = new Scanner(System.in);
        String fileName;     /* everything through here compiles */
        System.out.print("Enter the file to use: ");
        //the rest of your code
    }
}
于 2012-04-26T01:01:52.217 に答える
7

そのようなクラスでコードをただ浮かせることはできません。メソッド、コンストラクター、または初期化子のいずれかにある必要があります。あなたはおそらくあなたのメインメソッドにそのコードを持っているつもりでした。

于 2012-04-26T01:02:08.160 に答える