//猿辅导洗牌的那道题 本地跑出来很好, 为什么网页上显示数组越界啊 求大神指导 import java.util.Scanner; public class test1 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); Scanner scanner2=new Scanner(System.in); //下面是对第一行数字读取 将两个数字放在了num数组里面 String inputString=scanner.nextLine(); String stringArray[]=inputString.split(" "); int num[]=new int[stringArray.length]; for(int i=0;i<stringArray.length;i++){ num[i]=Integer.parseInt(stringArray[i]); } //下面这行是读取第二行数字,将那些数字放在了num2数组里面 String inputString2=scanner2.nextLine(); String stringArray2[]=inputString2.split(" "); int num2[]=new int[stringArray2.length]; for(int i=0;i<stringArray2.length;i++){ num2[i]=Integer.parseInt(stringArray2[i]); } //下面定义了两个数组分别用来放 那两部分数字 (前半段数字跟后半段数字) int temp1[]=new int[stringArray2.length/2]; int temp2[]=new int[stringArray2.length-stringArray2.length/2]; //下面就是不断循环 进行洗牌 int i=0; while(i<num[1]){ // int j=0; for(int j=0;j<stringArray2.length/2;j++){ temp1[j]=num2[j]; } for(int j=0;j<(stringArray2.length-stringArray2.length/2);j++){ temp2[j]=num2[j+stringArray2.length/2]; } int ii=0,jj=0; while(ii<stringArray2.length/2||ii<(stringArray2.length-stringArray2.length/2)){ if(ii<temp2.length){ num2[jj]=temp2[ii]; jj++;} if(ii<temp1.length) { num2[jj] = temp1[ii]; jj++; } ii++; } i++; } for(int iii=0;iii<num2.length;iii++) System.out.print(num2[iii]+" "); } }
全部评论
(0) 回帖