在一个文本文件里有以下数据aaa河南机电高等专科学校 天天0001 tt
bb河南科技学院 许平勇0002 xpy
c河南师范大学 王0003 w一共是三列,
第一列是学校,输出到控制台要占30个字符
第二列是姓名和学号占15个字符
第三列是简写占6个字符要求:
输出到myeclipse控制台,一定要对齐,可能我一发贴每一行里面的空格都没有了,但我希望一列一列对齐,
这道题其实是国信蓝点的全国大赛上的,难就难在字母和汉字在一起,无法按预期的格式化输出,用了很多办法就是对不齐
希望大侠实现一下
bb河南科技学院 许平勇0002 xpy
c河南师范大学 王0003 w一共是三列,
第一列是学校,输出到控制台要占30个字符
第二列是姓名和学号占15个字符
第三列是简写占6个字符要求:
输出到myeclipse控制台,一定要对齐,可能我一发贴每一行里面的空格都没有了,但我希望一列一列对齐,
这道题其实是国信蓝点的全国大赛上的,难就难在字母和汉字在一起,无法按预期的格式化输出,用了很多办法就是对不齐
希望大侠实现一下
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,可以看到:
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();
}
我已经说了要在MyExclipse里的控制台里进行输出,如果输出到dos下很简单,你的方法在控制台是行不通的
大概思路是,自己创建一个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可以自己调查调查
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();
}
}
这题确实没意义。
这道题确实非常难控制,在dos下能对齐,但是在eclipse对不齐,因为字体的原因,
这个说的很对,建议打印出来就行了,不要再坚持了