在一个文本文件里有以下数据aaa河南机电高等专科学校      天天0001      tt
bb河南科技学院              许平勇0002        xpy
c河南师范大学           王0003   w一共是三列,
第一列是学校,输出到控制台要占30个字符
第二列是姓名和学号占15个字符
第三列是简写占6个字符要求:
输出到myeclipse控制台,一定要对齐,可能我一发贴每一行里面的空格都没有了,但我希望一列一列对齐,
这道题其实是国信蓝点的全国大赛上的,难就难在字母和汉字在一起,无法按预期的格式化输出,用了很多办法就是对不齐
希望大侠实现一下

解决方案 »

  1.   


    public class FormatTest {
    public static void main(String[] args)throws Exception {
    String arr[] = new String[]{
    "aaa河南机电高等专科学校 天天0001 tt",
    "bb河南科技学院 许平勇0002 xpy",
    "c河南师范大学 王0003 w"
    };
    for(int i=0;i<arr.length;i++){
    String []tmp = arr[i].split("\\s+");
    System.out.print(new String(String.format("%-30s",new String(tmp[0].getBytes("GBK"),"ISO-8859-1")).getBytes("ISO-8859-1"),"GBK"));
    System.out.print(new String(String.format("%-15s",new String(tmp[1].getBytes("GBK"),"ISO-8859-1")).getBytes("ISO-8859-1"),"GBK"));
    System.out.print(new String(String.format("%-6s", new String(tmp[2].getBytes("GBK"),"ISO-8859-1")).getBytes("ISO-8859-1"),"GBK"));
    System.out.println();
    }
    }
    }
    //直接从命令运行javac和java,可以看到:
      

  2.   


    String arr[] = new String[] { "aaa河南机电高等专科学校 天天0001 tt",
    "bb河南科技学院 许平勇0002 xpy", "c河南师范大学 王0003 w" };
    for (int i = 0; i < arr.length; i++) {
    String[] tmp = arr[i].split("\\s+");
    System.out.printf("%-30s", tmp[0]);
    System.out.printf("%-15s", tmp[1]);
    System.out.printf("%-6s", tmp[2]);
    System.out.println();
    }
      

  3.   

    //
    我已经说了要在MyExclipse里的控制台里进行输出,如果输出到dos下很简单,你的方法在控制台是行不通的
      

  4.   

    myeclipse控制台的“ ”(空格),字母,中文字符占位都是不同的貌似中文字符占两个英文字符的宽度,但是空格的宽度又是单独的,所以会对不齐想对齐得知道空格占位符的宽度是多少....
      

  5.   

    如果是这样的话,问题就在于eclipse插件上了,对eclipse插件不熟悉的话根本没法做,所以这个考点不好,意义不大。
    大概思路是,自己创建一个Eclipse的控制台,然后设置其字体(至于什么字体也需要再做调查),最后把结果输出到自己创建的控制台上(不知道Eclipse缺省的控制台能不能修改字体)
    LZ可以自己到Eclipse官方网上看看相关的文档。
    大概涉及到的包
    org.eclipse.ui.console
    org.eclipse.swt.widgets
    org.eclipse.jface
    org.eclipse.swt.graphics
    org.eclipse.swt.internal.win32
    这个感觉没什么意义,就不再研究了,LZ可以自己调查调查
      

  6.   


       public static void main(String[] args) {
          String arr[] = new String[]{
                "aaa河南机电高等专科学校 天天0001 tt",
                "bb河南科技学院 许平勇0002 xpy",
                "c河南师范大学 王0003 w"
            };
            for(int i=0;i<arr.length;i++){
                String []tmp = arr[i].split("\\s+");
                if(i == 0) {
                   System.out.print(tmp[0] + "\t");
                }
                else {
                   System.out.print(tmp[0] + "\t\t");
                }
                
                if(i == 1) {
                   System.out.print(tmp[1] + "\t");
                }
                else {
                   System.out.print(tmp[1] + "\t\t");
                }            System.out.print(tmp[2] + "\t\t");
                System.out.println();
            }
       }
    这题确实没意义。
      

  7.   

    呵呵,问下,split("\\s+")等同于split(" ")吗
      

  8.   

    ------------------------------------------------------------
    这道题确实非常难控制,在dos下能对齐,但是在eclipse对不齐,因为字体的原因,
    这个说的很对,建议打印出来就行了,不要再坚持了
      

  9.   

    你的方法是可以,但是不具有通用性。。把第一个“aaa河南机电高等专科学校”改短点,你的程序将会不行了
      

  10.   

    呵呵.和你的eclipse设置有关系啊.