#java #sorting #arraylist #filereader #insertion-sort
#java #сортировка #список массивов #filereader #вставка-сортировка #arraylist
Вопрос:
* В этой программе я читаю два файла, а затем удаляю все знаки препинания и применяю «Алгоритм вставки» (я создал метод в этой программе).Каждый раз, когда я вызываю эту программу, включая «InsertionSort», генерируется пустой выходной файл, и, исключая этот метод, программа работает нормально.
import java.util.*;
import java.io.*;
public class LexicanTester {
// Sorting method
public static void InsertionSort(ArrayList<String> List)
{
for(int i=1; i<List.size(); i )
{
String value = List.get(i);
int n = List.size();
while(true )
{
if (i==0)
{
List.set(0,value);
}
else if(List.get(i-1).compareTo(value)<=0)
{
List.set(i,value);
i--;
}
else
{
List.set(i, List.get(i-1));
i--;
}
}
}
}
public static void main(String args[]) throws IOException
{
Scanner sc1 = new Scanner(new File("file name"));
Scanner sc2 = new Scanner(new File("file name"));
ArrayList<String> list = new ArrayList<String>();
FileWriter writer = new FileWriter ("C:\Users\amank\eclipse-workspace\DataStructures\src\output.txt");;
try {
// File read and adding to list
while (sc1.hasNext())
{
list.add(sc1.nextLine().trim().toLowerCase().replaceAll("\p{P}", "").replaceAll("[0-9] ",""));
}
while (sc2.hasNext())
{
list.add(sc2.nextLine().trim().toLowerCase().replaceAll("\p{P}", "").replaceAll("[0-9] ",""));
}
String newLine = System.getProperty("line.separator");
String newLine2 = System.getProperty("line.separator");
InsertionSort(list); // method to sort available text in the files
// writting in new file
for(String str: list)
{
writer.write(str newLine);
}
for(String str1: list)
{
writer.write(str1 newLine2);
}
sc1.close();
sc2.close();
writer.close();
}
catch (Exception e) {
System.out.println("file not found");
}
}
}*
Ответ №1:
Потому что InsertionSort имеет мертвый код в цикле while. Измените метод InsertionSort, как показано ниже.
public static void InsertionSort(ArrayList<String> List) {
for (int i = 1; i < List.size(); i ) {
String value = List.get(i);
int j = i - 1;
while (j >= 0 amp;amp; value.compareTo(List.get(j)) < 0) {
List.set(j 1, List.get(j));
j--;
}
List.set(j 1, value);
}
}
Комментарии:
1. после реализации этот текст появляется в файле, но не отсортирован.
2. Он не отсортирован или отсортирован в порядке возрастания?