Word Search程序存在问题

时间:2016-03-20 16:03:10

标签: java

我正在尝试创建一个单词搜索程序,将文件中的单词逐字符放入矩阵中。

import java.util.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class SearchWord {
    public SearchWord() {

    }

    public void getMatrix() throws FileNotFoundException {
        File file = new File("C:/Users/Cameron/Desktop/words.txt");
        ArrayList<Character> words;

        String largest = " ";
        int col = 0;
        int count = 0;

        Scanner sc = new Scanner(file);
        Scanner newsc = new Scanner(file);

        while (sc.hasNextLine()) {
            String first = sc.next();
            String first1 = sc.nextLine();

            if (first.length() > largest.length()) {
                largest = first;
                col = largest.length();
            }

            words = new ArrayList<Character>();

            for (int i = 0; i < first.length(); i++) {
                words.add(first.charAt(i));
            }

            char[] chars = new char[words.size()];

            for (int i = 0; i < chars.length; i++) {
                chars[i] = words.get(i);
            }

            char data[][] = new char[largest.length()][col];

            for (int i = 0; i < chars.length; i++) {
                for (int j = 0; j < largest.length(); j++) {
                    data[i][j] = chars[i];
                }
            }

            for (int i = 0; i < data.length; i++) {
                for (int j = 0; j < data[i].length; j++) {
                    System.out.println(data[i][j] + " ");
                }

                System.out.println();
            }
        }
    }

    public static void main(String[] args) throws FileNotFoundException {
        SearchWord check = new SearchWord();
        check.getMatrix();
    }
}

我的words.txt文件中有瓢虫,围栏和汉堡字样,但我无法正确地将它们读入矩阵。我最终希望在普通字母上重复单词。我也想要用随机字母填充空格,但我可以稍后再说。

看起来应该是这样的:

alaaaaafa
hamburger
adaaaaana 
ayaaaaaca
abaaaaaea 
auaaaaaaa
agaaaaaaa

但它改为:

l l l l l l l 
a a a a a a a 
d d d d d d d 
y y y y y y y 
b b b b b b b 
u u u u u u u 
g g g g g g g 
h h h h h h h h h 
a a a a a a a a a 
m m m m m m m m m 
b b b b b b b b b 
u u u u u u u u u 
r r r r r r r r r 
g g g g g g g g g 
e e e e e e e e e 
r r r r r r r r r 
f f f f f f f f f 
e e e e e e e e e 
n n n n n n n n n 
c c c c c c c c c 
e e e e e e e e e 

1 个答案:

答案 0 :(得分:1)

我相信程序中有两个错误,可以解决您的两个问题。

首先,使用chars.length而不是largest.length分配数组。除非您读取的最后一个字符串也是最大的,否则会出现内存错误。

其次,您使用println而不是print来显示字符;你的外循环中已经有println,所以你似乎正确地计划在内循环中使用print。

另外,我已经完成了你正在尝试的东西,但是在C ++中(不,抱歉,不会分享那个代码),作为一个有用的提示,你可能想要一个看这个: https://en.wikipedia.org/wiki/Smith%E2%80%93Waterman_algorithm