Java 不断询问,直到2D数组给出正确的值
我目前正在做一个edX课程的小项目。我坚持做一件事,从用户那里获取值并将其存储在2d数组中。但是,这些值应该在一个范围内,因此我需要重新提示相同的内容,这是必须满足的条件 我自己已经找到了一个解决办法,但我不知道这是一种常见的做法还是有更好的方法 让我解释一下 我有这样一个数组:Java 不断询问,直到2D数组给出正确的值,java,arrays,input,Java,Arrays,Input,我目前正在做一个edX课程的小项目。我坚持做一件事,从用户那里获取值并将其存储在2d数组中。但是,这些值应该在一个范围内,因此我需要重新提示相同的内容,这是必须满足的条件 我自己已经找到了一个解决办法,但我不知道这是一种常见的做法还是有更好的方法 让我解释一下 我有这样一个数组: int[][]用户坐标=新的int[5][2] 我想用用户的坐标信息填充这个数组,但是坐标应该在0到9之间 我是这样做的, int coordinateValueX = 0, coordinateValueY = 0;
int[][]用户坐标=新的int[5][2]代码>
我想用用户的坐标信息填充这个数组,但是坐标应该在0到9之间
我是这样做的,
int coordinateValueX = 0, coordinateValueY = 0;
Scanner input = new Scanner(System.in);
for (int i = 0; i < userCoordinates.length; i++) {
// X - Value
for (int j = 0; j <= 0; j++) {
System.out.print("Enter X coordinate for your " + (i + 1) + ". ship:");
coordinateValueX = input.nextInt();
if (gridCheck(coordinateValueX)) {
j--;
}
}
// Y - Value
for (int j = 1; j <= 1; j++) {
System.out.print("Enter Y coordinate for your " + (i + 1) + ". ship:");
coordinateValueY = input.nextInt();
if (gridCheck(coordinateValueY)) {
j--;
}
}
}
int coordinateValueX=0,coordinateValueY=0;
扫描仪输入=新扫描仪(System.in);
对于(int i=0;i 对于(intj=0;j,您的问题与数组无关,都与输入有关
创建一个方法,该方法要求用户提供一个值,并且在获得某个范围内的值之前不会返回,例如:
private int askForInt(Scanner scanner, String coordName, int max) {
while (true) {
System.out.print("Give your " + coordName + " coordinate: ");
int i = input.nextInt();
input.nextLine(); // clear new line from buffer
if (i >= 0 && i <= max) {
return i;
}
System.err.println("Please enter a number between 0 and " + max);
}
}
private int askForInt(扫描程序、字符串坐标名、int max){
while(true){
系统输出打印(“给出你的“+coordName+”坐标:”;
int i=input.nextInt();
input.nextLine();//从缓冲区中清除新行
如果(i>=0&&iAah,那真是太好了。你还教我可以将扫描仪传递给方法。在你的帖子中,如果我理解正确,我会这样做。如果我错了,请纠正我
Scanner scanner = new Scanner(System.in);
int[][] userCoordinates = new int[5][2];
for (int i = 0; i < userCoordinates.length; i++) {
for (int j = 0; j < userCoordinates[0].length; j++) {
if(j == 0)
userCoordinates[i][j] = validateCoordinate(scanner, "x");
if(j == 1)
userCoordinates[i][j] = validateCoordinate(scanner, "y");
}
}
您可以进一步简化提示。请参阅我更新的答案。当然,请在输入获取方法中使用您的gridCheck方法。此外,此“答案”应该是对我的答案的评论,因为这是它的目的。感谢您握住我的手。下次,我将对人们的评论进行评论。
Scanner scanner = new Scanner(System.in);
int[][] userCoordinates = new int[5][2];
for (int i = 0; i < userCoordinates.length; i++) {
for (int j = 0; j < userCoordinates[0].length; j++) {
if(j == 0)
userCoordinates[i][j] = validateCoordinate(scanner, "x");
if(j == 1)
userCoordinates[i][j] = validateCoordinate(scanner, "y");
}
}
public static boolean gridCheck(int coordinateValue) {
boolean flag = false;
if (coordinateValue > 9 || coordinateValue < 0) {
flag = true;
}
return flag;
}
public static int validateCoordinate(Scanner scanner, String xory){
while(true){
if(xory.equals("x")){
System.out.print("Give your X coordinate: ");
}else if (xory.equals("y")){
System.out.print("Give your Y coordinate: ");
}
int coordinate = scanner.nextInt();
if(!gridCheck(coordinate)){
return coordinate;
}else{
System.err.println("Please give a valid coordinate.");
}
}
}