Java通过键盘输入并保存到数组

将Scanner对象input用于获取键盘输入

将Scanner对象定义在try块中,可以自动关闭

例题1:通过键盘输入n个数字,并保存到数组

解:Scanner input = new Scanner(System.in)为设置自动关闭;

        循环输入n个数字,并保存到数组numbers;遍历输入的数组保存到numbers

        因为直接输出numbers运行出的直接是数组的内存地址,所以调用Arrays.toString()方法打印数组中的数据

import java.util.Arrays;
import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		try(Scanner input = new Scanner(System.in)){
			System.out.println("请输入数组长度:");
			int n = input.nextInt();
			System.out.println("请输入数:");
			//创建数组
			int[] numbers = new int[n];
			//循环输入n个数字,并保存到数组numbers
			for(int i = 0;i < n;i++) {
				numbers[i] = input.nextInt();
				System.out.println(Arrays.toString(numbers));
			}
		}
	}
}
请输入数组长度:
12
请输入数:
3
[3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

4
[3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
5
[3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0]
6
[3, 4, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0]
3
[3, 4, 5, 6, 3, 0, 0, 0, 0, 0, 0, 0]
45
[3, 4, 5, 6, 3, 45, 0, 0, 0, 0, 0, 0]
6
3[3, 4, 5, 6, 3, 45, 6, 0, 0, 0, 0, 0]

[3, 4, 5, 6, 3, 45, 6, 3, 0, 0, 0, 0]
54
[3, 4, 5, 6, 3, 45, 6, 3, 54, 0, 0, 0]
26
[3, 4, 5, 6, 3, 45, 6, 3, 54, 26, 0, 0]
6
[3, 4, 5, 6, 3, 45, 6, 3, 54, 26, 6, 0]
62
[3, 4, 5, 6, 3, 45, 6, 3, 54, 26, 6, 62]

 例题2:键盘输入1-33之间不重复的7个数字

解:先定义数组,数组中保存7个数字,对数组进行循环,把输出的数字保存到temp中;再检查保存的数字是否再1-33范围之间,如果是,结束本次循环进入下一次,如果不是输出”请输入1-33之间的数字“;再检查是否存在重复值,如果存在输出"请不要输入重复数字!",跳回到上层循环。

import java.util.Arrays;
import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		//键盘输入1-33之间不重复的7个数字
		try(Scanner input = new Scanner(System.in)){
			//定义数组,保存7个数字
			int[] numbers = new int[7];
			outer:
			for(int i = 0;i<numbers.length;i++) {
				System.out.printf("请输入第%d个数字:",i+1);
				int temp = input.nextInt();
				//检查1-33
				if(temp < 1 || temp > 33) {
					System.err.println("请输入1-33之间的数字");
					i--;
					continue;//结束本次循环(外层循环),进入下一次循环
				}
				//检查是否存在重复数字
				for(int k = 0;k < i;k++) {
					if(numbers[k] == temp) {
						//存在重复数字
						System.err.println("请不要输入重复数字!");
						i--;
						//在内层循环中,结束外层循环outer
						continue outer;
					}
				}
				//保存
				numbers[i] = temp;
				System.out.println(Arrays.toString(numbers));
			}
		}
	}
}

运行结果:

请输入第1个数字:2
[2, 0, 0, 0, 0, 0, 0]
请输入第2个数字:34
请输入1-33之间的数字
请输入第2个数字:2
请不要输入重复数字!
请输入第2个数字:14
[2, 14, 0, 0, 0, 0, 0]
请输入第3个数字:0
请输入1-33之间的数字
请输入第3个数字:2
请不要输入重复数字!
请输入第3个数字:6
[2, 14, 6, 0, 0, 0, 0]
请输入第4个数字:18
[2, 14, 6, 18, 0, 0, 0]
请输入第5个数字:16
[2, 14, 6, 18, 16, 0, 0]
请输入第6个数字:24
[2, 14, 6, 18, 16, 24, 0]
请输入第7个数字:11
[2, 14, 6, 18, 16, 24, 11]

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值