У меня есть приложение, которое преобразует некоторые текстовые файлы в другие тестовые и CSV-файлы (для каждого 3 текстовых файла я генерирую текстовый файл и похожий файл csv). Он заказывает несколько лагерей в соответствии с методом compareTo
, разница между текстовыми файлами и файлами cvs заключается в том, что в текстовых файлах у меня есть, например, 27 лагерей, а в файлах csv всего 25, но другая информация такая же, два, что у меня есть какой-то порядок.Может ли сбой сравнивать?
Например, в исходном текстовом файле у меня есть: имя, фамилия, номер телефона, почтовый индекс и номер идентификатора.
В текстовых файлах, которые приложение возвращает, у меня есть: имя, фамилия, почтовый индекс и номер идентификации.
В файлах csv у меня есть: имя, почтовый индекс и номер идентификации.
Проблема заключается в том, что я должен изменить порядок в почтовом индексе со следующим кодом:
public int compareTo(Comunicado otro) {
int cod1=Integer.parseInt(this.codigoPostal);
int cod2=Integer.parseInt(otro.codigoPostal);
if(this.codigoPostal.startsWith("28") && otro.codigoPostal.startsWith("28")==false)
cod1=0;
else if(this.codigoPostal.startsWith("08") && otro.codigoPostal.startsWith("08")==false)
cod1=1;
if(otro.codigoPostal.startsWith("28") && this.codigoPostal.startsWith("28")==false)
cod2=0;
else if(otro.codigoPostal.startsWith("08") && this.codigoPostal.startsWith("08")==false)
cod2=1;
if(this.codigoPostal.equalsIgnoreCase("00000")){
cod1=2;
}
if(otro.codigoPostal.equalsIgnoreCase("00000")){
cod2=2;
}
return cod1-cod2;
}
Есть ли вероятность того, что два файла, которые я возвращающие имеет различный порядок?
У меня изменить мой код, добавив следующие строки:
public int compareTo(Comunicado otro) {
int cod1=Integer.parseInt(this.codigoPostal);
int cod2=Integer.parseInt(otro.codigoPostal);
if(this.codigoPostal.startsWith("28") && otro.codigoPostal.startsWith("28")==false)
cod1=0;
else if(this.codigoPostal.startsWith("08") && otro.codigoPostal.startsWith("08")==false)
cod1=1;
if(otro.codigoPostal.startsWith("28") && this.codigoPostal.startsWith("28")==false)
cod2=0;
else if(otro.codigoPostal.startsWith("08") && this.codigoPostal.startsWith("08")==false)
cod2=1;
if(this.codigoPostal.equals(otro.codigoPostal))
{
if(this.codicoCliente.compareToIgnoreCase(otro.codicoCliente) == 0)
{
return this.codicoCliente.compareToIgnoreCase(otro.codicoCliente);
}
}
if(this.codigoPostal.equalsIgnoreCase("00000")){
cod1=2;
}
if(otro.codigoPostal.equalsIgnoreCase("00000")){
cod2=2;
}
return cod1-cod2;
}
этого достаточно, чтобы убедиться, что там не проблемы?
Наконец я решил мою проблему со следующим кодом:
if(this.codigoPostal.startsWith("28") && otro.codigoPostal.startsWith("28")==false)
cod1=0;
else if(this.codigoPostal.startsWith("08") && otro.codigoPostal.startsWith("08")==false)
cod1=1;
if(otro.codigoPostal.startsWith("28") && this.codigoPostal.startsWith("28")==false)
cod2=0;
else if(otro.codigoPostal.startsWith("08") && this.codigoPostal.startsWith("08")==false)
cod2=1;
if(this.codigoPostal.equalsIgnoreCase("00000")){
cod1=2;
}
if(otro.codigoPostal.equalsIgnoreCase("00000")){
cod2=2;
}
if(this.codigoPostal.equals(otro.codigoPostal))
{
int i = this.codicoCliente.compareTo(otro.codicoCliente);
if (i != 0) return i;
}
return cod1-cod2;
}
Привет, спасибо, когда у меня есть в исходном txt некоторые люди с одним и тем же почтовым индексом, мне нужно, чтобы в двух файлах, которые я возвращаю, они должны иметь одинаковый порядок. нужно ли тогда делать другое сравнение, чтобы избежать проблемы? Я попробовал apliccation с большим количеством txt, и когда-либо у меня такой же порядок, даже если слишком много людей с одним и тем же почтовым индексом. В апликации в первую очередь должны появиться люди с почтовым индексом 28 ***. люди с почтовым индексом 08 *** и, наконец, люди с другим почтовым индексом, но которые появляются по логическому порядку номера. – Deckard27
Я отредактировал свой ответ с некоторым пересмотренным кодом. Дайте мне знать, если он решает проблему –
Привет, я думаю, что с вашим кодом я могу найти проблему, потому что я использую cod1 и cod2 как int, и я думаю, что с этим возвратом невозможно использовать cod1 и cod2 как int , – Deckard27