使用Scanner和String作为方法的输入

时间:2016-11-14 21:01:10

标签: java methods

嘿,我已经被困在这个问题上了一段时间,但我正试图在这样的方法中使用String和Scanner:

void top (String coordinates, Scanner top) {

        while (top.hasNext()){
            coordinates(new Scanner(top.next()));
            System.out.println(coordinates);
        }

此部分不会出现错误,但在此部分中出现错误:

void start() {
        Scanner in = UIAuxiliaryMethods.askUserForInput().getScanner();
        in.useDelimiter("=");

        top(new Scanner(in.next()));

        while (in.hasNext()){
            behind(new Scanner(in.next()));
            infront(new Scanner(in.next()));
        }
    }

它说它不适用于争论(扫描仪)。我确实制作了两个字符串但是我不能使用in.hasNext()和next()。有人知道错误是怎么回事?如果这是不可能的,我想我必须为该方法制作两个字符串并重做虚空顶部。

由于我有些人认为没有传递过String,我确实为它做了一个方法,但是方法只在该方法本身的while循环中使用。

String coordinates (Scanner coordinates) {
        coordinates.useDelimiter(",");

        int arr[] = new int[2];
        int k;

        for(int j=-1;coordinates.hasNextInt();j++) {
            if (j/2!=0) {
                k = coordinates.nextInt()+1;
            } else {
                k = coordinates.nextInt();
            }
            arr[j] = k;
        } 
        String str = arr[1]+","+arr[2];
        return str;
    }

(它确实看起来不太好,但是我必须使用数组进行分配)

Eclipse说要像这样做

top(null, new Scanner(in.next()));
系统中的错误消失但是当我运行它时抛出: 显示java.lang.NullPointerException

1 个答案:

答案 0 :(得分:1)

你不能打电话

top(new Scanner(in.next()));

因为top方法需要StringScanner

void top (String coordinates, Scanner top) {

您只传递一个参数Scanner

首先传入String