Java 不断询问,直到2D数组给出正确的值

Java 不断询问,直到2D数组给出正确的值,java,arrays,input,Java,Arrays,Input,我目前正在做一个edX课程的小项目。我坚持做一件事,从用户那里获取值并将其存储在2d数组中。但是,这些值应该在一个范围内,因此我需要重新提示相同的内容,这是必须满足的条件 我自己已经找到了一个解决办法,但我不知道这是一种常见的做法还是有更好的方法 让我解释一下 我有这样一个数组: int[][]用户坐标=新的int[5][2] 我想用用户的坐标信息填充这个数组,但是坐标应该在0到9之间 我是这样做的, int coordinateValueX = 0, coordinateValueY = 0;

我目前正在做一个edX课程的小项目。我坚持做一件事,从用户那里获取值并将其存储在2d数组中。但是,这些值应该在一个范围内,因此我需要重新提示相同的内容,这是必须满足的条件

我自己已经找到了一个解决办法,但我不知道这是一种常见的做法还是有更好的方法

让我解释一下

我有这样一个数组:

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.");
        }
    }

}