在Java中,类内嵌类是什么?

3

我有一个关于作业的小问题,如果可以的话,希望能得到一些解释。

目前,我正在学习数据结构课程,并且正在完成一个任务,该任务将执行修改后的二分查找,以查找一对数字以找到最左边的数字和最右边的数字(如果有多个),并打印出它们的位置。我现在遇到的大问题是老师希望我们使用一个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",示例整数"x"为10。我原本以为这会像我最近完成的LinkedList作业一样,你定义了类(Pair),然后使用数据设置和获取整数。最开始我的写法是:
private class Pair(int data){
  this.data = data; 
}

但我不确定为什么它不能按照我的预期工作。无论如何这就是我的问题,任何有助于理解的帮助都将非常感激。


我现在已经让它正常工作了,只需要稍微整理一下就可以继续前进了。稍后我会发布我的代码以展示我所做的。 - kevorski
1个回答

4

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

private static class Pair(int data)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接