服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

让你知道:java 文件的缩进排版


  //以下是我做的java 文件的缩进排版,算法有缺点.但能用,
  //不管怎么说,排java文件时比ultraledit的排版强。
  
  import java.io.file;
  import java.io.printstream;
  import java.util.arraylist;
  import lang9.str9;
  import lang9.out;
  import util9.load9;
  
  class dentjavacode
  {
  
  public static boolean dent(file file, file file1)
  {
  string as[] = new string[1];
  if(file == null || !file.exists())
  {
  return false;
  } else
  {
  as = load9.copy(file, as);
  arraylist arraylist = new arraylist();
  dent(as, arraylist, 0);
  as = (string[])arraylist.toarray(as);
  out.b("s.len=" + as.length);
  load9.copy(as, file1);
  return true;
  }
  }
  
  public static int dent(arraylist arraylist, arraylist arraylist1, int i)
  {
  if(arraylist == null && arraylist.size() == 0)
  {
  system.out.println("dent frm list1,but list1 isnull");
  return i;
  }
  if(arraylist1 == null)
  {
  system.out.println("dent to list2,but list2 is null");
  return i;
  } else
  {
  string as[] = new string[1];
  as = (string[])arraylist.toarray(as);
  return dent(as, arraylist1, i);
  }
  }
  
  public static string[] dent(string as[], string as1[], int i)
  {
  arraylist arraylist = new arraylist();
  dent(as, arraylist, i);
  if(as1 == null)
  as1 = new string[1];
  return (string[])arraylist.toarray(as1);
  }
  
  public static int dent(string as[], arraylist arraylist, int i)
  {
  int j = as.length;
  boolean flag = false;
  if(as == null || as.length == 0)
  {
  system.out.println("dent from s[],but s[] is null");
  return i;
  }
  if(arraylist == null)
  {
  system.out.println("dent to list,but list is null");
  return i;
  }
  for(int l = 0; l < as.length; l++)
  {
  if(as[l] == null)
  continue;
  as[l] = as[l].trim();
  int k = as[l].length();
  if(k == 0)
  continue;
  int i1 = str9.indexof_outquotes(special, as[l]);
  if(i1 < 0)
  {
  if(flag)
  arraylist.add(space(2) + as[l]);
  else
  arraylist.add(space(i) + as[l]);
  continue;
  }
  string s = as[l].substring(i1);
  if(s.indexof("{") == 0)
  s = "{";
  else
  if(s.indexof("}") == 0)
  s = "}";
  else
  if(s.indexof("//") == 0)
  s = "//";
  else
  if(s.indexof("*/") == 0)
  s = "*/";
  else
  if(s.indexof("/*") == 0)
  s = "/*";
  if(s.equals("//"))
  {
  if(i1 > 0)
  {
  arraylist.add(space(i) + as[l].substring(0, i1));
  arraylist.add(space(i) + as[l].substring(i1));
  } else
  {
  arraylist.add(space(i) + as[l]);
  }
  continue;
  }
  if(s.equals("*/"))
  {
  flag = false;
  if(i1 > 0)
  arraylist.add(space(2) + as[l].substring(0, i1));
  arraylist.add("*/");
  i1 += 2;
  if(k > i1)
  {
  as[l] = as[l].substring(i1);
  l--;
  }
  continue;
  }
  if(s.equals("/*"))
  {
  flag = true;
  if(i1 > 0)
  {
  arraylist.add(space(i) + as[l].substring(0, i1));
  as[l] = as[l].substring(i1);
  }
  if((i1 = str9.indexof_outquotes("*/", as[l], i1 + 2)) != -1)
  {
  flag = false;
  i1 += 2;
  arraylist.add(as[l].substring(0, i1));
  if(as[l].length() > i1)
  {
  as[l] = as[l].substring(i1);
  l--;
  }
  continue;
  }
  if(as[l].length() <= 0)
  continue;
  arraylist.add("/*");
  as[l] = as[l].substring(2);
  if(as[l].length() > 0)
  arraylist.add(space(2) + as[l]);
  continue;
  }
  if(s.equals("{"))
  {
  i1++;
  if(as[l].indexof("//") == i1)
  {
  arraylist.add(space(i) + as[l]);
  i += increment;
  continue;
  }
  arraylist.add(space(i) + as[l].substring(0, i1));
  i += increment;
  if(k > i1)
  {
  as[l] = as[l].substring(i1);
  l--;
  }
  continue;
  }
  if(s.equals("}"))
  {
  arraylist.add(space(i) + as[l].substring(0, i1));
  i -= increment;
  i1++;
  if(k > i1 && as[l].charat(i1) == ';')
  {
  arraylist.add(space(i) + "};");
  i1++;
  if(k > i1)
  {
  as[l] = as[l].substring(i1);
  l--;
  }
  continue;
  }
  if(as[l].indexof("}//") == 0)
  {
  system.out.println("2s[i]=" + as[l] + ",indent=" + i);
  arraylist.add(space(i) + as[l]);
  continue;
  }
  arraylist.add(space(i) + "}");
  if(k > i1)
  {
  as[l] = as[l].substring(i1);
  l--;
  }
  } else
  {
  arraylist.add(space(i) + as[l]);
  }
  }
  
  return i;
  }
  
  static string space(int i)
  {
  return str9.repeat(' ', i);
  }
  
  public dentjavacode(file file)
  {
  string as[] = null;
  as = load9.copy(file, as);
  arraylist arraylist = new arraylist();
  dent(as, arraylist, 0);
  string s = file.getname();
  int i = 0;
  boolean flag = false;
  file file1;
  file1 = file1 = new file(s + "dent0");
  i = 1;
  do
  {
  if(i >= 5)
  break;
  file1 = new file(s + "dent" + i);
  if(!file1.exists())
  break;
  i++;
  } while(true);
  if(file1.exists())
  file1.delete();
  if(file.renameto(file1))
  {
  string as1[] = (string[])arraylist.toarray(as);
  load9.copy(as1, file);
  system.out.println("ok");
  } else
  {
  system.out.println("rename:false");
  }
  }
  
  public static void main(string args[])
  {
  string args1[] = new string[1];
  file file = new file(args[0]);
  args1 = load9.copy(file, args1);
  arraylist arraylist = new arraylist();
  dent(args1, arraylist, 0);
  file file1 = new file(args[0] + "dent0");
  int i = 1;
  do
  {
  if(i >= 5)
  break;
  file1 = new file(args[0] + "dent" + i);
  if(!file1.exists())
  break;
  i++;
  } while(true);
  if(file1.exists())
  file1.delete();
  string args2[] = (string[])arraylist.toarray(args1);
  if(file.renameto(file1))
  {
  load9.copy(args2, file);
  system.out.println("ok");
  } else
  {
  system.out.println("rename:false");
  }
  }
  
  static int increment = 3;
  public static string special[] = {
  "{", "}", "//", "/*", "*/"
  };
  
  }

扫描关注微信公众号