Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么循环没有中断?_Java_Loops_While Loop - Fatal编程技术网

Java 为什么循环没有中断?

Java 为什么循环没有中断?,java,loops,while-loop,Java,Loops,While Loop,我的目标是打印出给定的坐标,如果它们是有效的格式。我有一个helper函数isValid来检查字符串是否为坐标,positionQuery要求用户输入,如果isValid为false,positionQuery给出一个错误并再次要求坐标,如果为true,则打印出坐标。但是,我的布尔值或循环有问题,因为我没有得到任何输出 public static boolean validCoordinate(String coordinate, int dimension) { String

我的目标是打印出给定的坐标,如果它们是有效的格式。我有一个helper函数isValid来检查字符串是否为坐标,positionQuery要求用户输入,如果isValid为false,positionQuery给出一个错误并再次要求坐标,如果为true,则打印出坐标。但是,我的布尔值或循环有问题,因为我没有得到任何输出

public static boolean validCoordinate(String coordinate, int dimension) {
        String [] alphabet = new String[dimension];
        for(int i = 0; i < dimension; i++) {
            alphabet[i] = Character.toString((char)(65 + i));
        }
        List<String> list = Arrays.asList(alphabet);
        int [] numbers = new int [dimension];
        for(int i = 0; i < dimension; i++){
            numbers[i] = 1 + i;
        }
            if(list.contains(Character.toString(coordinate.charAt(0)))) {
                for(int j = 0; j < dimension; j++) {
                    if ((coordinate.substring(1)).contains(Integer.toString(numbers[j]))) {
                        return true;
                    }
                }
            }

        return false;
    }



    public static String[] positionQuery(int dim, Scanner test_in) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Provide origin and destination coordinates.");
        System.out.println("Enter two positions between A1-H8:");
        while(true) {
            String line = scanner.nextLine();
            String[] coordinates = line.split(" ");
            if(coordinates.length == 2) {
                String origin = coordinates[0];
                String dest = coordinates[1];
                if(validCoordinate(origin, dim) && validCoordinate(dest,dim)) {
                    System.out.println(coordinates);
                }
            }
            else {
                System.out.println("ERROR: Please enter valid coordinate pair separated by space.");
            }

        }
    }
公共静态布尔有效坐标(字符串坐标,整数维){
字符串[]字母表=新字符串[尺寸];
对于(int i=0;i

如果我能看出我做错了什么,那就太不可思议了:)

您的方法名为
validcoordination
(not
isValid
)。而且,对于这种方法来说,代码太多了。检查是否有两个字符,检查它们是否都在各自的范围内。没有循环,没有集合,没有数组。像

public static boolean validCoordinate(String coordinate, int dim) {
    if (coordinate.length() == 2) {
        char a = coordinate.charAt(0);
        char b = coordinate.charAt(1);
        return a >= 'A' && a <= ('A' + dim) && b >= '1' && b <= ('1' + dim);
    }
    return false;
}

请停止同样的操作。阅读。

这是因为
if(validcoordination(origin,dim)和&validcoordination(dest,dim))
总是错误的,这是否回答了您的问题?
System.out.println(Arrays.toString(coordinates));