2014-02-28 30 views
2

我要做的是取一个只包含文本并正确格式化的文件。理论上看起来很容易,但我遇到了一个问题,我不知道如何解决。这是我的代码。 TAB_SIZE是最终诠释设定为4Java文件处理。基本。文本输出错误

public static void justifyJava(String inputFileName, 
            String outputFileName, 
            int tabSize) throws FileNotFoundException { 

    Scanner input = new Scanner(new File(inputFileName)); 
    String str = "hi"; 
    int tabCount = 0; 
    while (input.hasNext()){ 
     str = input.next(); 
     System.out.print(str + " "); 
     if (str.equals("{")) { 
      tabCount++; 
      System.out.println(); 
      for (int i = 0; i < TAB_SIZE * tabCount; i++){ 
       System.out.print(" "); 
      } 
     } else if(str.equals(");")){ 
       tabCount--; 
       System.out.println(); 
       for (int i = 0; i < TAB_SIZE * tabCount; i++){ 
       System.out.print(" "); 
       } 
     } else if(str.equals("}")) { 
       tabCount--; 
       System.out.println(); 
       for (int i = 0; i < TAB_SIZE * tabCount; i++){ 
       System.out.print(" "); 
       } 
     } 
    }  
} 

因此,这段代码的一对夫妇我要处理的文件的伟大工程,但是当在连续循环是二卡住。

class Test3 { 
    public static void main(String[ ] args) { 
     for(int i = 1; i < 10; i ++) { 
      System.out.println("Hello World!"); 
     } 
    for(int i = 1; i < 10; i ++) { 
     for(int j = 1; j < 10; j ++) { 
      for(int k = 1; k < 10; k ++) { 
       System.out.println("Hello World!"); 
      } 
     } 
    } 
if(3 < 5) { 
    System.out.println("Hello World!"); 
} 
else if (4 < 5) { 
System.out.println("Hello World!"); 
if(5 > 3) { 
System.out.println("Hello World!"); 
} 
} 
} 
} 

我明白,问题是,“}”,它是减少的空格数,但我怎样才能得到它后检查,如果下一个标记是“为(”无扫描仪实际移动到“对于(“所以它仍然会打印,当我再次运行时?我将不得不建立一个新的扫描仪或重新组织代码?任何帮助表示赞赏

回答

1

修改justifyJava()方法来正确格式化,并用Test3类这是工作正常,让我知道如果你发现任何困难:

public static void justifyJava(String inputFileName, String outputFileName, 
     int tabSize) throws FileNotFoundException { 

    Scanner input = new Scanner(new File(inputFileName)); 
    String str = "hi"; 
    int tabCount = 0; 
    String prevToken = ""; 

    while (input.hasNext()) { 
     str = input.next();   
     if(str.equals("{") || str.equals(");")){ 
      System.out.print(str + " "); 
      System.out.println(); 
     } 
     if(prevToken.equals(");") && !str.equals("}")){ 
      for (int i = 0; i < TAB_SIZE * tabCount; i++) { 
       System.out.print(" "); 
      } 
     }else if (str.equals("{")) { 
      tabCount++; 
      for (int i = 0; i < TAB_SIZE * tabCount; i++) { 
       System.out.print(" "); 
      } 
     } else if (str.equals("}")) { 
      tabCount--; 
      if(!");".equals(prevToken)){ 
       System.out.println(); 
      } 
      for (int i = 0; i < TAB_SIZE * tabCount; i++) { 
       System.out.print(" "); 
      } 
      System.out.print(str + " "); 
     } 
     if(!(str.equals("{") || str.equals(");") || str.equals("}"))){ 
      System.out.print(str + " "); 
     } 
     if((str!= null && !"".equals(str.trim()))){ 
      prevToken = str; 
     } 
    } 
}