Vergleich von string zu array von strings verwenden .equals () - Methode
Ich versuche zu vergleichen, die ein array von Zeichenfolgen (eine csv-Datei von Börsen-Symbole importiert wurde, in eine arraylist und dann in ein array), aber es scheint nicht zu funktionieren. Bin ich nicht zu vergleichen mit richtigen Daten geben oder so? Hier ist mein code:
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.ArrayList;
public class search
{
public static void main(String[] args)
{
try
{
//csv file containing data
String strFile = "companylist.csv";
//create BufferedReader to read csv file
BufferedReader br = new BufferedReader(new FileReader(strFile));
String strLine = "";
StringTokenizer st = null;
int lineNumber = 0, tokenNumber = 0;
//create arraylist
ArrayList<String> arrayList = new ArrayList<String>();
//read comma separated file line by line
while ((strLine = br.readLine()) != null)
{
lineNumber++;
//break comma separated line using ","
st = new StringTokenizer(strLine, ",");
while (st.hasMoreTokens())
{
//display csv values
tokenNumber++;
arrayList.add(st.nextToken());
//System.out.println("Line # " + lineNumber + ": "+ st.nextToken() + " " + st.nextToken());
} //end small while
//reset token number
tokenNumber = 0;
} //end big while loop
//send csv to an array
Object[] elements = arrayList.toArray();
/*
for(int i=0; i < elements.length ; i++) {
System.out.println(elements[i]);
} */
Scanner input = new Scanner(System.in);
System.out.print("Enter Ticker symbol");
String sym = input.next();
for (int i = 0; i < elements.length; i++)
{
if (elements[i].equals(sym))
{
System.out.println("match");
}
}
}
catch (Exception e)
{
System.out.println("Exception while reading csv file: " + e);
}
}//end main
}//end class
Jede Hilfe wird sehr geschätzt
- Da bist du schon mit
Scanner
, warum dann nicht auch Sie, dass zum Lesen der Datei? - Nicht ganz sicher, aber das element array ist ein Objekt, array, Object[].(könnte ein problem werden, wenn Sie vergleichen-Objekt mit String -) warum konvertieren arrayList-array sowieso besser Schleife durch die arraList. for(String element:arrayList)
- Hinweis: Jeder Aufruf
nextToken()
voranzutreiben, um das nächste token. Wenn Sie kommentieren Sie das println in der inneren Schleife, besteht die Liste nur noch halb so groß und die Werte ausgedruckt werden nicht in der Liste.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vergewissern Sie sich zuerst, Ihre Elemente sind korrekt geschrieben. Zum Beispiel - ohne Leerzeichen (verwenden Sie
trim()
)Dann können Sie etwas einfacher:
elementsList.contains(sym)
.toLowerCase()
für beide. Oder mit Ihrem Vergleich code -equalsIgnoreCase(..)
Nicht verwenden
StringTokenizer
; verwenden Sie stattdessenString#split
. Auch, stellen Sie sicher, dass Sie schneiden Sie Ihre Werte (Benutzer-Eingabe und jedes token) zu berücksichtigen, für störende Leerräume. In Java-Klassennamen beginnen mit upppercase Zeichen. Sie nie schließen Sie IhreReader
schlechte Sache.