У меня есть файл, который является перестановочным словом, отформатированным следующим образом. Как это отформатирован, когда я открываю его в программу, как блокнот, это, кажется, не быть растянуты на всех, так, например, для человеческого глаза, первый бит выглядит следующим образом:Разбивка переполненного списка слов
ATHROCYTESDISHLIKEIRRECOVERABLENESSESEMBRITTLEMENTSYOUNGSOVER
но когда я копирую и мимо него, он появляется отформатированный как это:
ATHROCYTES
DISHLIKE
IRRECOVERABLENESSES
EMBRITTLEMENTS
YOUNGS
OVER
Я пытаюсь загрузить этот файл в массив, так что я могу сортировать его. Я борюсь за то, как правильно это сломать. Я обнаружил, что с помощью этого кода:
while (dis.available() != 0) {
System.out.println(dis.readLine());
}
печатает документ отформатирован правильно, так же, как если бы я скопировать и вставить его. Я использую этот код, чтобы попытаться загрузить его в массив:
String[] store = sb.toString().split(",");
Поскольку нет запятых, слова не разделены правильно. Понимая это, я также попробовал этот код, чтобы попытаться разбить его на каждой новой строке:
String[] store = sb.toString().split(scan.nextLine());
Оба они дают мне тот же результат, слова печатаются на одной и той же линии. Кто-нибудь теперь, как я мог бы получить мои результаты, правильно отформатированные в массив?
Я включил остальную часть моего кода, так как возможно, что проблема возникает в другом месте:
public class InsertionSort {
public static String[] InsertSort(String[] args) {
int i, j;
String key;
for (j = 1; j < args.length; j++) { //the condition has changed
key = args[j];
i = j - 1;
while (i >= 0) {
if (key.compareTo(args[i]) > 0) {//here too
break;
}
args[i + 1] = args[i];
i--;
}
args[i + 1] = key;
return args;
}
return args;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
Scanner scan = new Scanner(System.in);
System.out.println("Insertion Sort Test\n");
int n;
String name, line;
System.out.println("Enter name of file to sort: ");
name = scan.next();
BufferedReader reader = new BufferedReader(new FileReader(new File(name)));
//The StringBuffer will be used to create a string if your file has multiple lines
StringBuffer sb = new StringBuffer();
File file = new File(name);
FileInputStream fis = null;
BufferedInputStream bis = null;
DataInputStream dis = null;
try {
fis = new FileInputStream(file);
// Here BufferedInputStream is added for fast reading.
bis = new BufferedInputStream(fis);
dis = new DataInputStream(bis);
// dis.available() returns 0 if the file does not have more lines.
while (dis.available() != 0) {
// this statement reads the line from the file and print it to
// the console.
System.out.println(dis.readLine());
}
// dispose all the resources after using them.
fis.close();
bis.close();
dis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
while((line = reader.readLine())!= null){
sb.append(line);
}
//We now split the line on the "," to get a string array of the values
String[] store = sb.toString().split("/n");
System.out.println(Arrays.toString(store));
/* Call method sort */
InsertSort(store);
n = store.length;
FileWriter fw = new FileWriter("sorted.txt");
for (int i = 0; i < store.length; i++) {
fw.write(store[i] + "\n");
}
fw.close();
}
}
вы пробовали Notepad ++? Он работает намного лучше, чем блокнот. Линии, вероятно, разделены разрывом строки (\ n). Это должен быть ваш разделитель. Я не знаком с Java, но, похоже, это ваша проблема. –
Я просто использовал блокнот, так как это .txt-файл. Я делаю все свое кодирование в NetBeans. С учетом сказанного я попытался изменить свой код, чтобы сделать split \ n, давая мне: String [] store = sb.toString(). Split ("/ n"); но я все равно получаю тот же результат, что все они находятся на одной линии. – user3068177
Ну, вы использовали неправильную косую черту. Кроме того, notepad ++ лучше читает файлы, вот почему я предлагаю его. –