数组习题

1、给一个不多于5位的正整数,求是几位数,逆序打印各位数字

import java.util.Scanner;

/**
 * 给一个不多于5位的正整数,求是几位数,逆序打印各位数字
 * @author	努力Coding
 * @version
 * @data	2020年1月8日 
 */
public class HowManyNum {

	public static void main(String[] args) {
		int[] arr = new int[5];//声明一个数组存放逆序输出的各位数
		
		System.out.println("输入一个不多于5位的正整数:");
		Scanner input = new Scanner(System.in);
		
		if(input.hasNextInt()) {//判断输入是否为整数
			int num = input.nextInt();
			if(num > 99999 || num < 0) {//判断是否不多于5位
				System.out.println("非法输入,请输入不多于5位的正整数");
			}else {
				String count = String.valueOf(num);//计算有多少位
				System.out.println(num + "是" + count.length() + "位数");
				for(int i = 0; i < count.length(); i++) {
					arr[i] = num % 10;//取个位
					num /= 10;//去个位
				}
				System.out.println("逆序输出各位数:");
				for(int i = 0; i < count.length(); i++) {//遍历输出
					System.out.print(arr[i] + ",");
				}
			}
		}else {
			System.out.println("非法输入,请输入不多于5位的正整数");
		}
		input.close();//关闭输入
	}

}

2、有n个整数,使其前面各数顺序向后移动m个位置,最后m个数变成最前面的m个数

import java.util.Scanner;

/**
 * 有n个整数,使其前面各数顺序向后移动m个位置,最后m个数变成最前面的m个数
 * @author	努力Coding
 * @version
 * @data	2020年1月8日 
 */
public class MovePosition {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入整数的个数:");
		int len = input.nextInt();//元素个数,即数组长度
		int[] arr = new int[len];//声明一个数组
		for(int i = 0; i < len; i++) {//输入数组元素
			System.out.println("请输入第" + (i+1) + "个数字");
			arr[i] = input.nextInt();
		}
		System.out.println("-------------------");
		System.out.println("当前输入的数组元素为:");
		for(int i = 0; i < len; i++) {
			System.out.print(arr[i] + ",");
		}
		System.out.println();
		System.out.println("-------------------");
		System.out.print("请输入向后移动几位:");
		int moveNum = input.nextInt();//移动多少位
		if(moveNum > len || moveNum < 0) {//移动位数不能超过数组长度,也不能小于0
			System.out.println("输入不合法");
		}
		int[] newArr = new int[len];//声明一个新数组
		for(int i = 0; i < len; i++) {
			newArr[i] = arr[i];//把旧数组的元素给新数组
		}
		for(int i = 0; i < len; i++) {
			int temp = (i + moveNum) % len;//移动后的新位置
			arr[temp] = newArr[i];//获取新位置后的数组
		}
		System.out.println("-------------------");
		System.out.println("向后移动" + moveNum +"位后数组元素为:");
		for(int i = 0; i < len; i++) {
			System.out.print(arr[i] + ",");
		}
		input.close();
	}
}

3、使用循环随机生成10个随机数存放在数组中,找出最大,最小值,打印出来

import java.util.Random;

/**
 * 使用循环随机生成10个随机数存放在数组中,找出最大,最小值,打印出来
 * @author	努力Coding
 * @version
 * @data	2020年1月8日 
 */
public class RandNum {

	public static void main(String[] args) {
		int[] arr = new int[10];//声明一个数组存放随机数
		/*假设第一个元素是最大值和最小值*/
		int max = arr[0];//最大值
		int	min = arr[0];//最小值
		for (int i = 0; i < arr.length; i++) {
			Random random = new Random();//产生随机数
			arr[i] = random.nextInt(10);//0-10之间的随机数
		}
		System.out.println("生成的数组是:");
		for(int x : arr) {
			System.out.print(x + ",");//打印随机数生成的数组
		}
		for (int i = 0; i < arr.length; i++) {
			if(max < arr[i]) {//判断 最大值
				max = arr[i];
			}
			if(min > arr[i]) {//判断 最小值
				min = arr[i];
			}
		}
		System.out.println();
		System.out.println("最大的是:" + max + ",最小的是:" + min);
	}

}
posted @ 2020-01-08 20:53  笔架山Code  阅读(177)  评论(0)    收藏  举报