每日作业


数字环

有一个长度为n的数字环, 将每个数字往后移动m位, 使其成为一个新的数字环

输入: 

第一行: n  表示有n个数字

第二行: n个整数An, 表示数字环的每个元素

第三行: m  表示每个元素需要往后移动m位

 (1<n<100, 0<An<1000, 0<=m<=100)

输出: 移动后的新数字环

样例输入:

10

1 2 3 4 5 6 7 8 9 10

2

样例输出:

9 10 1 2 3 4 5 6 7 8 

 1 package com.work;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Assignment_14 {
 6     public static void main(String[] args) {
 7         Scanner reading = new Scanner(System.in);
 8         int n,m;
 9         System.out.print("输入数字环的长度:");
10         n = reading.nextInt();
11         int[] A = new int[n];
12         System.out.print("输入"+n+"个元素:");
13         for (int i = 0; i < n; i++) {
14             A[i] = reading.nextInt();
15         }
16         System.out.println("输入每个元素需要往后移动的位次:");
17         m = reading.nextInt();
18         while (true) {       //对输入进行判断
19             if (m > n - 1 || m < 0) {
20                 System.out.print("移动的位数不能大于数组的长度,请不能为负数!请重新输入:");
21                 m = reading.nextInt();
22             } else {
23                 break;
24             }
25         }
26         int[] Array = new int[n];// 定义一个新的数组,与原来的数组长度相同
27         for (int i = 0; i < n; i++) {
28             Array[i] = A[i];
29         }
30         for (int i = 0; i < n; i++) {
31             int tmp = (i + m) % n;// 计算新的位置,即元素移动m的位置
32             A[tmp] = Array[i];
33         }
34         System.out.print("移动 " + m + " 个位置后,数组变为:");
35         for (int i = 0; i < n; i++) {
36             System.out.print(A[i] + " ");
37         }
38     }
39 }

相关