题目
完成数组元素的移动功能:假设数组有n个元素,输入一个数x,把数组的第x个位置的元素先保存起来,然后把x+1到n的元素,依次往前移一位,最后将原来的第x个位置的元素放在数组的最后。
重复若干次这样的移动,得到最后的结果。
输入格式:
第一行包括一个整数n(1<=n<=100),表示数组元素的个数。
第二行输入n个数组元素,均为整数,用空格隔开。
第三行输入一个数k(1<=k<=100),表示要进行k次移动。
接下来k行,每行一个数x,表示要移动第x个元素。
输出格式:
输出经过k次移动后的数组,每两个元素之间用空格隔开。
输入样例:
10
1 2 3 4 5 6 7 8 9 10
4
4
3
2
5
输出样例:
1 5 6 7 9 10 4 3 2 8
代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
//一维数组存放元素
int []a = new int[n];
for(int i = 0;i < n; i++){
a[i] = input.nextInt();
}
//k行,其实后面用不着,换一种方法可能可以
int k = input.nextInt();
//循环处理每次移动
while(input.hasNext()){
int move = input.nextInt();
//辅助变量存储移动元素
int temp = 0;
temp = a[move-1];
//从移动元素后一位开始,逐个往前移动
for(int i = move;i < n; i++){
a[i-1] = a[i];
}
//移动元素放到数组最后
a[n-1] = temp;
}
//遍历数组,格式要求,最后一个元素单独处理
for(int i = 0; i < n-1; i++){
System.out.printf(a[i]+" ");
}
System.out.println(a[n-1]);
}
}
代码详解
思路
1.创建一维数组存放元素
2.创建辅助变量temp,暂存移动元素
3.从移动元素后一位开始,逐个往前移动,将移动元素放在数组最后
代码点
1. int k = input.nextInt();
while(input.hasNext()){}
k在这儿其实没什么用,因为while(input.hasNext())表示,有输入就继续循环
这里可以采用for循环,for(int i = 0; i < k; i++){},效果是一样的
2. 代码其他部分和之前的博客题很相似,大同小异,不清楚可以往前翻翻