将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]