【发布时间】:2016-02-04 23:40:55
【问题描述】:
你好,我想写一个程序来改变 Java 程序 从下一行大括号样式到像这样的行尾大括号样式
公开课测试
{
public static void main(String [] args)
{
if (expr)
{
}
}
到此
public class Test {
public static void main(String [] args) {
if (expr) {
}
}
程序应该从用户那里读入(提示他们“输入文件名:”) 包含要更改的程序的文件的名称。如果文件不能 打开,向用户打印一条错误消息(“Bad filename”)并提示 他们再次输入文件名,修改后的文件应该写回你阅读的同一个文件 从。您不能在打开文件的同时打开文件以供阅读 写作。因此,您应该存储要写入文件的行 在字符串的 ArrayList 中,然后在完成后将它们写入文件 关闭了你用来读取文件的 Scanner 对象
这是我到目前为止所写的,我遇到了错误。谁能帮忙, 谢谢
import java.util.ArrayList;
import java.util.Scanner;
import java.io.File;
import java.io.PrintWriter;
public class Extension {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String fileName = "";
System.out.println("Enter File Name: ");
fileName = input.next();
File f = new File("src/" + fileName);
do{
if(f.exists()){
}
else{
System.out.println("Bad filename");
System.out.println("Enter File Name: ");
fileName = input.nextLine();
}
} while (!(f.exists()));
ArrayList<String> fileRead = new ArrayList<String>();
String paran = ("{");
String newLine = "";
while(input.hasNextLine()) {
fileRead.add(input.nextLine());
}
input.close();
f.close;
//File f = new File("src/"+ fileName);
PrintWriter output = new PrintWriter(f);
output.print(fileRead.get(0)) ;
for(int i = 1; i < fileRead.size()-1 ; i++){
if(fileRead.get(i).equals("{")){
newLine = fileRead.get(i-1);
newLine += paran;
}
else
output.print(fileRead.get(i));
}
}
}
【问题讨论】:
-
这会查找文件中的任何花括号,还是仅查找对 Java 编译器具有特定含义的花括号?如果是后者,您必须真正了解您正在解析的内容的上下文。这绝非易事。
-
不只是对编译器具有特定含义的花括号,并将其更改为下一行样式
-
有什么理由不能使用您选择的现有格式化程序?
-
在我看来,这就像老师设置的经典简单编码挑战 - 在这种情况下,我希望大括号的上下文并不重要。
-
我们假设使用eclipse,只需更改对编译器重要的大括号
标签: java arraylist file-io printwriter