java - 用户输入中的非重复数字
问题描述
我正在尝试研究如何创建一个输入验证,它不会让您输入相同的数字两次以及在一个数字范围内,除非它是一个整数,否则什么都不能输入。我目前正在创建一个彩票程序,但我不确定如何执行此操作。任何帮助将非常感激。我的号码范围验证有效,但其他两个验证无效。我尝试了非重复号码验证,但我不确定如何进行仅数字验证。有人可以告诉我如何构造这个吗?
这个方法在我的 Player 类中
public void choose() {
int temp = 0;
for (int i = 0; i<6; i++) {
System.out.println("Enter enter a number between 1 & 59");
temp = keyboard.nextInt();
keyboard.nextLine();
while ((temp<1) || (temp>59)) {
System.out.println("You entered an invalid number, please enter a number between 1 and 59");
temp = keyboard.nextInt();
keyboard.nextLine();
}
if (i > 0) {
while(temp == numbers[i-1]) {
System.out.println("Please enter a different number as you have already entered this");
temp = keyboard.nextInt();
keyboard.nextLine();
}
}
numbers[i] = temp;
}
}
解决方案
执行以下操作:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static int[] numbers = new int[6];
static Scanner keyboard = new Scanner(System.in);
public static void main(String args[]) {
// Test
choose();
System.out.println(Arrays.toString(numbers));
}
static void choose() {
int temp;
boolean valid;
for (int i = 0; i < 6; i++) {
// Check if the integer is in the range of 1 to 59
do {
valid = true;
System.out.print("Enter in an integer (from 1 to 59): ");
temp = keyboard.nextInt();
if (temp < 1 || temp > 59) {
System.out.println("Error: Invalid integer.");
valid = false;
}
for (int j = 0; j < i; j++) {
if (numbers[j] == temp) {
System.out.println("Please enter a different number as you have already entered this");
valid = false;
break;
}
}
numbers[i] = temp;
} while (!valid); // Loop back if the integer is not in the range of 1 to 100
}
}
}
示例运行:
Enter in an integer (from 1 to 59): 100
Error: Invalid integer.
Enter in an integer (from 1 to 59): -1
Error: Invalid integer.
Enter in an integer (from 1 to 59): 20
Enter in an integer (from 1 to 59): 0
Error: Invalid integer.
Enter in an integer (from 1 to 59): 4
Enter in an integer (from 1 to 59): 5
Enter in an integer (from 1 to 59): 20
Please enter a different number as you have already entered this
Enter in an integer (from 1 to 59): 25
Enter in an integer (from 1 to 59): 6
Enter in an integer (from 1 to 59): 23
[20, 4, 5, 25, 6, 23]
推荐阅读
- c - 如何在 C 中使用 scanf() 检查输入字符数组 (%s) 的长度
- javascript - Vue组件中未触发更改事件的Flickity
- kubernetes - 采用带有 operator-sdk 和基于 helm 的运营商的现有 helm 版本
- java - 如果用户在 Java 中没有输入任何内容怎么办
- anaconda - jupyter 笔记本“ConnectionRefusedError”
- javascript - Knex RAW MySQL 查询添加新行
- css - 如何在 react-native 中设置左侧的后退按钮样式?
- java - 在 Spring Boot 中工作时如何在 xml 定义中获取我的应用程序上下文
- string - 宏中可怕的复合引用
- json - 将多个字典列表作为 curl 请求中的数据作为 json Content-Type 发送