У меня есть программа, где мне нужно, чтобы сохранить результаты в ArrayList: -Как сравнить с нулевым элементом в массиве в java?
public class ReseedingDBRandomElements {
public static void main(String[] args){
try {
// getting the field Keyword from the csv
String csvfile="/Users/dray/Downloads/ReseedingDBRandomKeywords.csv";
BufferedReader br =new BufferedReader(new FileReader(csvfile));
StringTokenizer st = null;
String line="";
int linenumber=0;
int columnnumber;
// initializing the parameter for each column
int free = 0;
int free1 = 0;
// create the ArrayList
ArrayList<String> Keyword = new ArrayList<String>();
ArrayList<String> Alternate = new ArrayList<String>();
// reading through the csv file
while((line=br.readLine())!=null){
linenumber++;
columnnumber = 0;
st = new StringTokenizer(line,",");
while(st.hasMoreTokens()){
columnnumber++;
String token = st.nextToken();
if("Keyword".equals(token)){
free=columnnumber;
System.out.println("The value of free :"+free);
}else if ("Alternate".equals(token)){
free1=columnnumber;
System.out.println("The value of free1 :"+free1);
}
if(linenumber>1){
if (columnnumber==free)
{
Keyword.add(token);
}else if (columnnumber==free1){
Alternate.add(token);
}
}
}
}
// converting the keyword ArrayList to an array
String[] keyword = Keyword.toArray(new String[Keyword.size()]);
for(int i=0;i<keyword.length;i++){
System.out.println(" The value of the keyword is :"+keyword[i]);
}
// converting the alternate ArrayList to an array
String[] alternate = Alternate.toArray(new String[Alternate.size()]);
for(int i=0;i<alternate.length;i++){
System.out.println("The value of the alternate is :"+alternate[i]);
}
ArrayList<String> AlternateNew = new ArrayList<String>();
for(int i=1;i<keyword.length;i++){
if(keyword[i].equals(keyword[i-1])){
AlternateNew.add(alternate[i-1]);
}else if(!(keyword[i]==(keyword[i-1]))){
AlternateNew.add(alternate[i]);
}
}
String[] alternatenew = AlternateNew.toArray(new String[AlternateNew.size()]);
System.out.println("The length of the array is :"+alternatenew.length);
for(int i=0;i<alternatenew.length;i++){
System.out.println("the value of the alternatenew :"+alternatenew[i]);
}
}catch (Exception e){
System.out.println("there is an error :"+e);
}
}
}
Ниже приведен файл CSV
Keyword,Alternate
ego kit,baby doll
ego kit,garage park
ego kit,random beats
galaxy tab,venus
galaxy tab,earth
galaxy tab,sun
То, что я пытаюсь сделать, это сравнить элементы и сохранить его в arraylist и отображать результаты, но когда последний элемент сравнивается, т.е. «галактическая вкладка» становится по сравнению с пустым полем после последней «закладки галактики», она не сохраняет предыдущий результат в arraylist, который является «солнцем»
Описание результатом является программа:
The value of the alternate is :baby doll
The value of the alternate is :garage park
The value of the alternate is :random beats
The value of the alternate is :venus
The value of the alternate is :earth
Последний элемент не хранится в архиваторе.
Не понимаю, почему? Новое для программирования на Java.
Ваш код может быть значительно сокращен и упрощен, если все, что вы хотите сделать, это прочитать 'String' после', 'в каждой строке. –
Я просто попробовал вашу программу, и я думаю, что получаю ожидаемый результат, что заставляет меня думать, может быть, ваш входной файл не будет завершен должным образом (может быть, это не конец новой строки?). Попробуйте поместить 'System.out.println (" read line: "+ line") после 'readLine()' и убедитесь, что все ваши строки ввода читаются. Кроме того, это не сработает: 'keyword [i] == (keyword [i-1])'. Никогда не сравнивайте строки с '==', используйте 'keyword [i] .equals (ключевое слово [i-1])'. – ajb
после того, как я не смог найти ошибку, я запускаю свой код на своем компьютере, и это сработало для меня, я получаю все 6 значений ... – JohnnyAW