1

私がやろうとしているのは、このようなJavaファイルを取ることです

public class test1 {
public static void main ( string[] args ) {
System.out.println( "This is Test 1." );
}
}

そして、適切な間隔とインデントでテキスト ファイルを出力することを想定しています。これまでのところ、最初の行の正しいインデントを取得できます。しかし、終了ブラケットのスペースを出力する 2 番目の for ループに問題があります。終わりのブラケットは、最初の 3 行のように内側ではなく外側に印刷されます。私の変数が混乱している場合は申し訳ありません。

これまでの私のコードは次のとおりです

public class JavaJustifier {
public static void main( String[] args ) 
           throws FileNotFoundException {

    for( int i = 1; i < 6; i++ ) {
        justifyJava( "Test" + i + ".java", 
                     "Justified" + i + ".txt", 
                     4 );
    }                
}
public static void justifyJava( String inputFileName,
                                String outputFileName,
                                int tabSize ) 
        throws FileNotFoundException {


    int counter = 0;
    int counter2 = 0;
    int blah = 0;
    File f = new File(inputFileName);
    File p = new File(outputFileName);
    if  (p.exists())
        p.delete();
    Scanner input = new Scanner (f);
    PrintStream name = new PrintStream(new File(outputFileName));

    while (input.hasNextLine()) {
        String line = input.nextLine();
        Scanner lineScan = new Scanner(line);
        if (line.contains("{") == true) {
            name.print("{\r\n");
            counter++;
            for (int i = 1; i <= counter; i++) {
                for (int j = 0; j <= tabSize; j++) {
                    name.print(" ");
                }
            }
            System.out.println(counter);
        } else if (line.contains("}") == true) {
            name.print("\r\n");
            counter--;
            for (int x = 1; x <= counter; x++) {
                for (int y = 1; y <= tabSize; y++) {
                    name.print(" ");
                }
            }
            name.print("}");
            System.out.println(counter);
        } else {
            name.print(line);
        }
    }
}

それが私に与えるものは

public class Test1 
{
    public static void main( String[] args ) 
    {
        System.out.println( "This is Test 1." );
}
    }

私が望むのはこれです

public class Test1 
{
    public static void main( String[] args ) 
    {
        System.out.println( "This is Test 1." );
    }
}
4

1 に答える 1