Здравствуйте, столкнулся с такой проблемой, что compareTo закидывает самую первую строчку из файла в конец после сортировки. Так выглядит код
count=0;
for(int j=0;j<r.size();j++) {
count++;
for(int i=r.size()-1;i>j;i--) {
if(r.get(i).Name.compareTo(r.get(i-1).Name)<0) {
Collections.swap(r, i, i-1);
}
}
}
Вот данные которые читаются из файла:
Вот что компилятор выдает
Добавляю класс r
class Room {
String Name;
String Surname;
String RoomS;
int RoomN;
int RoomQ;
float cost;
Room(String Name,String Surname,String RoomS,int RoomN,int RoomQ,float cost) {
this.Name=Name;
this.Surname=Surname;
this.RoomS=RoomS;
this.RoomN=RoomN;
this.RoomQ=RoomQ;
this.cost=cost;
}
public String getName() {
return Name;
}
}
А так же считывания файла
public static void ShowFile() throws IOException{
if(check) {
count=0;
String tmp;
String str[];
try(BufferedReader fin = new BufferedReader(new FileReader("Rooms.txt"))){
tmp=fin.readLine();
while(tmp!=null) {
str=tmp.split(" ");
int r1=Integer.parseInt(str[3]);
int r2=Integer.parseInt(str[4]);
float r3=Float.parseFloat(str[5]);
r.add(new Room(str[0],str[1],str[2],r1,r2,r3));
count++;
tmp=fin.readLine();
}
check=false;
}catch(IOException e) {
System.out.println("Error I/O" + e);
}
}
}
Данные в txt файле
Jack Sparow Busy 1 3 100
Daniel BlackBeard Busy 2 3 100
Adolf Ruzveld Busy 3 4 100
Pētersone Ilze Busy 4 8 100
Liepa Māra Busy 5 3 100
No Info Free 6 4 101
No Info Free 7 6 102
Предполагаю, что проблема связана с кодировкой, а конкретно с BOM. Это невидимый символ, который некоторые текстовые редакторы вставляют в начале файла.
Для проверки можете попробовать сразу после считывания вывести первую букву имени первой комнаты:
char firstLetter = r.get(0).Name.charAt(0);
System.out.println("First letter of the first room: \""+ firstLetter + "\"("+ ((int) firstLetter)+")");
Если вместо первой буквы выводится ""(65279)
то это BOM.
Попробуйте следующие решения проблемы:
Откройте файл Rooms.txt в текстовом редакторе и попробуйте установить кодировку UTF-8 без BOM. Многие редакторы (например, Notepad++) поддерживают такую возможность.
Удаляйте символ сразу после чтения. Например, так:
while(tmp!=null) {
tmp = tmp.replace("\uFEFF", "");
...
Класс - реализация интерфейса, описывающего работникаУ каждого работника может быть менеджер, у каждого менеджера может быть менеджер итд
Существует кусками реализованная структура проектаБез многопоточности
Можно ли использовать gridview в linearlayout/ Ставлю, вроде отображает,а содержимого нету!
JSP ругается на поле с нижним подчеркиванием, но информации о том, что так делать нельзя, я не нашел