为什么想自动计算列宽呢?因为我有一次拿到一个项目,它里面的列宽都是写死的。后来需要改,一个个的改太麻烦了。
诸如这样的表格在网站上非常常见。我们不对列做设置的话,列宽就会取每列文本内容的最大长度。在只有一条文本非常长的时候,列宽就会偏大。
如果表格的列宽设置为固定值。表格有分页的时候,每页的表格列宽不能根据当页的文本做调整。
import java.util.*;
public class Main {
double average(List<Integer> a, int n){
//将最大值和最小值放在两边
for (int i=0;i<n;i++){
Collections.sort(a);
}
//求平均值
double sum=0;
for (int i=1;i<n-1;i++){
sum+=a.get(i);
}
return sum/(n-2);
}
public static void main(String[] args) {
System.out.println("Hello World!");
Person[] persons=new Person[5];
persons[0]=new Person("zhangwuji",30,"北京市三里垸");
persons[1]=new Person("lvbu",30,"北京市三里垸");
persons[2]=new Person("流川枫",30,"北京市三里垸北京市三里垸北京市三里垸北京市三里垸北京市三里垸北京市三里垸");
persons[3]=new Person("尼古拉斯凯奇",30,"北京市三里垸北京市三里垸北京市三里垸北京市三里垸北京市三里垸");
persons[4]=new Person("赵四",30000000,"北京市三里垸");
Main main = new Main();
List<Integer> names=new ArrayList<>();
List<Integer> ages=new ArrayList<>();
List<Integer> addresses=new ArrayList<>();
for (int i = 0; i < 5; i++) {
names.add(persons[i].getName().length());
ages.add(persons[i].getAge().toString().length());
addresses.add(persons[i].getAddress().length());
}
System.out.println(main.average(names, names.size()));
System.out.println(main.average(ages, ages.size()));
System.out.println(main.average(addresses, addresses.size()));
}
}
public class Person {
String name;
Integer age;
String address;
}
我的想法是对后端的表格数据进行处理,求它们长度的平均值。为了防止过长/过短的数据影响平均值,首先去掉最长的和最短的。