从二维数组中读取线条

时间:2015-10-26 10:11:45

标签: java arrays

我试图从二维数组中读取。 这段代码的作用是它首先将.txt文件内容存储到2d数组中,每个元素一行。然后它将用户输入与每个阵列进行比较,寻找相似之处。任何相似性都将存储在另一个数组中。

这里的事情是比较部分不起作用。任何关于为什么的提示?

感谢。

import java.awt.Point;
import java.io.File;
import java.util.Arrays;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Main {
    static int RowCheck =0;
    static int C_Row = 0;
    static int S_Row = 0;


    static String lexicon[][] = new String[3000][10];
    static String results[][] = new String[100][10];


    private static String find2DIndex(Object[][] array, Object search) {

        if (search == null || array == null) return null;

        for (int rowIndex = 0; rowIndex < array.length; rowIndex++ ) {
           Object[] row = array[rowIndex];
           if (row != null) {
              for (int columnIndex = 0; columnIndex < 2; columnIndex++) {
                 if (search.equals(row[columnIndex])) {

                     for(int i=0; i<2; i++)
                          for(int j=0; j<=10; j++)
                            lexicon[i][j]=results[i][j];

                         return Arrays.deepToString(results);
                 }
              }
           }
        }
        return null; // value not found in array
    }


    public static void main(String[] args) throws FileNotFoundException {

        File testlex = new File("C:\\Users\\Harry\\Documents\\testlex.txt");
        File testlex2 = new File("C:\\Users\\Harry\\Documents\\textlex2.txt");


        Scanner cc = new Scanner(testlex2);
        Scanner sc = new Scanner(testlex);

        while (sc.hasNextLine()){
            int column = 0;
            String line = sc.nextLine();
            sc.useDelimiter("/ *");
            if (line.isEmpty())
                continue;

            C_Row = C_Row + 1;
            column = 0;

            String[] tokens = line.split("\\s");

            for (String token : tokens) {
                if (token.isEmpty())
                    continue;
                lexicon[C_Row][column] = token;  
                column++; 
            }
        }

        while (cc.hasNextLine()){
            int column = 0;
            String line = cc.nextLine();
            cc.useDelimiter("/ *");
            if (line.isEmpty())
                continue;

            S_Row = S_Row + 1;
            column = 0;
            String[] tokens = line.split("\\s");
            for (String token : tokens) {
                if (token.isEmpty())
                    continue;

                lexicon[S_Row][column] = token;  
                column++; 
            }
        }

        sc.close();
        cc.close();

        find2DIndex(lexicon, "abash");
        System.out.println(C_Row);

     }    
}

1 个答案:

答案 0 :(得分:0)

此行会将searchrow[columnIndex]作为Object类型的对象进行比较。

if (search.equals(row[columnIndex]))

因此它会比较参考文献。您似乎想要比较String个对象的内容。您可以通过两种方式修改find2DIndex

  1. 将签名更改为

    private static String find2DIndex(String[][] array, String search) 
    

    并使用Object

  2. 替换函数中出现的String
  3. 将其转换为通用方法

    private static <T> String find2DIndex(T[][] array, T search) 
    

    并使用Object

  4. 替换函数中出现的T

    在这两种情况下,equals现在都是String的方法。