3

我的作业有点问题,如果我能得到一个,我想解释一下。

目前我在一个数据结构类中,正在做一个修改后的 BinarySearch 的分配,它将找到一对数字来找到最左边的数字和最右边的数字,如果有多个,并打印出位置。我现在遇到的一个大问题是老师希望我们使用 Pair 类来返回两个整数。我在主文件中创建了 Pair 类,想知道是否有人可以指出我做错了什么的正确方向。我不是在寻找答案,只是帮助我了解我需要做什么以及为什么。就代码而言,这就是我现在所得到的:

import java.util.*;
import java.io.*;

public class Test_BinarySearchDup{

private class Pair{
    public int left;
    public int right;
}

public static void main(String[] args) throws IOException{
    String file = args[0];
    int x = Integer.parseInt(args[1]);
    Scanner fin = new Scanner(new FileReader(file));
    int count = 0;
    while(fin.hasNext()){
        fin.nextInt();
        count++;
    }
    fin.close();

    int[] array = new int[count];

    fin = new Scanner(new FileReader(file));
    while(fin.hasNext()){
        for(int i = 0; i < array.length; i++){
            array[i] = fin.nextInt();
        }
    }
    fin.close();

    BinarySearchDup(array, x);
}

public static Pair BinarySearchDup(int[] A, int x){
    int low = 0, high = A.length - 1, mid = (low + high) / 2;
    while(low <= high){
        mid = (low + high) / 2;
        if(A[mid] == x)
            return Pair(mid);
        else if(A[mid] < x)
            low = mid + 1;
        else
            high = mid - 1;
    }
}
}

我通过命令行发送参数,所以文件名是 data.txt,示例 int x 是 10。我认为这将类似于我最近在定义类(对)的地方所做的 LinkedList 分配然后你设置并获取带有数据的整数。我原来有:

private class Pair(int data){
  this.data = data; 
}

但我不确定为什么这不会像我想要的那样工作。无论如何,这是我的问题,任何有助于理解这一点的帮助将不胜感激

4

1 回答 1

4

内部类不是静态的,这意味着它必须绑定到一个对象。主要方法是静态的。您不能从静态方法调用非静态成员。将内部类标记为静态。

private static class Pair(int data)
于 2013-04-07T15:13:17.630 回答