华为笔试题:实现一个5*5的数阵
题目:随便给你一串无顺序的数字,编程实现如下输出:
26????? 148???? 250???? 304???? 426
26????? 152???? 259???? 317???? 438
99????? 193???? 263???? 359???? 440
120???? 209???? 267???? 411???? 455
128???? 212???? 275???? 424???? 459
?
525???? 706???? 788???? 944
540???? 735???? 815???? 961
569???? 739???? 820???? 985
587???? 754???? 826
680???? 780???? 831
题目大概就是这个意思,我的代码实现如下
import java.util.*;
class Test
{
?public static void main(String[] args)
?{
??System.out.print("请输入你要输入多少个数(限制在1000个之内)");
??Scanner input = new Scanner(System.in);
??Random rand = new Random();
??int length = input.nextInt();
??int[] arr = new int[length];
??for (int i =0;i<length ;i++ )
??{
???arr[i]=rand.nextInt(1000);
??}
??for (int i =0;i<length-1 ;i++ )
??{
???for (int j=0;j<length-i-1 ;j++ )
???{
????if(arr[j]>arr[j+1])
?????arr[j]=arr[j+1]+(arr[j+1]=arr[j])*0;
???}
??}
??double cols = Math.ceil(length/5.0);//得到能分成几列
??double rows = Math.ceil(length/25.0)*5;//得到能分成几行
??int index = 0;
??int nextIndex =0;
??for (int i=0; i< rows;i++ )
??{
???if(i<5){
????index=i;
???}else if(i>=5){
????if(i%5==0){
?????System.out.println("\n");
?????nextIndex=i*5;
????}
????index = nextIndex++;
???}
???for (int j = 0; j< 5;j++ )
???{
????if(index<length){
?????System.out.print(arr[index]+"\t");
?????index+=5;
????}
???}
???System.out.println("\n\n");???
??}
?}
}