По какой-то причине, когда я запускаю эту программу, она не работает ... Предположим, что вы читаете из текстового файла, содержащего несколько слов, а затем печатаете анаграммы этих слов в новый файл, каждое слово и его анаграммы в одну линию, а затем следующее слово и его анаграммы в следующей строке ...Моя программа анаграмм не работает
входной текстовый файл содержит пример
«hpesvy
wounxppzu
xznoug
ehsypv
zpwuonxpu
xrqryptcb
uzngxo
gzuonx
ysepvh
uozgnx "
Java Ass2 inputfile.txt output
Я получаю сообщение об ошибке "нулевой"
и все отлично компилируется. Я понятия не имею, что происходит, может ли кто-нибудь помочь?
Код Организации состоит из двух файлов.
import java.io.*;
import java.io.FileWriter;
import java.util.*;
public class Ass2 {
public static void main(String[] args) {
if (args.length == 2){
String inFile = args[0];
String outFile = args[1];
try{
FileReader fr = new FileReader(inFile);
LineNumberReader lnr = new LineNumberReader(fr);
int linenumber = 0;
while (lnr.readLine() != null){
linenumber++;
}
FileInputStream fstream = new FileInputStream(inFile);
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
String [] array = new String[linenumber];
//Read File line by line
int i = 0;
while ((strLine = br.readLine()) != null){
array[i] = strLine;
i++;
}
in.close();
//String[] sorted = InsertionSort(array);
//fileWrite(sorted, outFile);
isAnagram(array);
}
catch(Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
}
else{
System.out.println("I need 2 arguments");
}
}
private static void fileWrite(String[] array, String outFile) {
BufferedWriter filewrite = null;
try{
filewrite = new BufferedWriter(new FileWriter(outFile));
filewrite.newLine();
for(int i=0; i<array.length; i++){
filewrite.write(array[i]);
filewrite.newLine();
}
filewrite.close();
}
catch (IOException e){}
}
public static char[] InsertionSort(char[] array){
//Insertion Sort algorithm from class
int j;
for(int i=1; i<array.length; i++){
char tmp = array[i];
for(j=i; j>0 && tmp<array[j-1]; j--){
array[j] = array[j-1];
}
array[j] = tmp;
}
return array;
}
public static void isAnagram(String [] sorted){
Node[] linkedListArray = new Node[sorted.length];
String tmp1 = "";
String tmp2 = "";
String [] myarray = new String [sorted.length];
for (int i = 0; i < sorted.length-1; i++) {
for(int a=i+1; a<sorted.length; a++){
tmp1 = sorted[i];
tmp2 = myarray[a];
if (tmp1.length() == tmp2.length()){
char [] a1 = tmp1.toCharArray();
a1 = InsertionSort(a1);
char [] a2 = tmp2.toCharArray();
a2 = InsertionSort(a2);
int j = 0;
boolean isAnan = true;
while (j<a1.length && isAnan == true){
if (a1[j] != a2[j]){
System.out.println(tmp1+ " is not An "+tmp2);
Node newLink = new Node(tmp1);
linkedListArray[j] = newLink;
}
j++;
}
}
}
}
}
}
.
public class Node {
public String item;
public Node next;
public Node(String tmp1){
this.item = tmp1;
}
}
class InsertionSort{
private Node head;
public InsertionSort(){
head = null;
}
public InsertionSort(Node[] linkedListArray){
head = null;
for(int j=0; j<linkedListArray.length; j++)
insert(linkedListArray[j]);
}
public void insert(Node newNode){
Node previous = null;
Node current = head;
while(current != null && current.item.compareTo(newNode.item)>0){
previous = current;
current = current.next;
}
if(previous==null)
head = newNode;
else
previous.next = newNode;
newNode.next = current;
}
public Node nextNode(){
Node temp = head;
head = head.next;
return temp;
}
}
Вы пытались отладить свой код? – Jens
Опубликовать трассировку ошибки. – Laerte
Как я могу отладить это, если я просто запустил его на терминале на Mac? – 2WeeksToGO