[英]Iterating in for-each loop Java
我有一個ArrayList,在其中搜索所需的元素,然后將其所需的部分添加到另一個ArrayList中。 問題是,如果我要繼續搜索單詞,不僅是一個單詞,我也不知道如何繼續遍歷循環中的元素。 使用迭代器,我將無法搜索所需的東西。
public static ArrayList<String> FindWord(){
ArrayList<String> rewrite=new ArrayList<>();//
ArrayList<String> word=Reading();// rewrites the data from one string to other
String userinput=Chat();
for(String elmt:word){
if (elmt.contains(userinput) && elmt.contains("=")) {
String[] parts=elmt.split("\\=");
rewrite.add(parts[1]);
// here I must do something like word.next
}
}
System.out.println(rewrite);
return rewrite; // RETURNS THE SYNONIM OF THE WORD
}
因此,就像我輸入“ hello”一樣,它將在文本文件中找到一個單詞“ greeting”。 如果我輸入“ awesome”,它將找到“ thanks”一詞,但是如果我輸入它們兩個,它將輸入一個空數組,就像什么也沒找到,而不是“ greeting,謝謝”
UPD:Reading()返回:
public static ArrayList<String> Reading() {
Scanner inputreader = null;
try {
inputreader = new Scanner(new FileInputStream("D:\\sinonims.txt"));
}catch (FileNotFoundException e1) { // OPENS FILE WITH SINONIMS
e1.printStackTrace();
System.out.println("File not found");
System.exit(0);
}
ArrayList<String> Sins=new ArrayList();
while(inputreader.hasNextLine()){
String l=inputreader.nextLine();
Sins.add(l); // REWRITES DATA FROM FILE TO ARRATLIST
}
inputreader.close();
System.out.print(Sins);
return Sins;
}
public static String Chat(){ System.out.println("Let's start talking."); Scanner in=new Scanner(System.in); String line=in.nextLine(); return line; }
您應該使用一些特定的分隔符來分割輸入字符串userinput
。
然后,對於每個單詞,遍歷拆分后的數組,並將每個單詞作為input
,使用您的技術找到其同義詞,並將其添加到arraylist
。
這可以通過對代碼進行一些更改來實現。
public static ArrayList<String> FindWord()
{
ArrayList<String> rewrite=new ArrayList<>();
ArrayList<String> word=Reading();
String userinput=Chat();
String inputs[]=userinput.split(","); //Considering delimiter is comma(",") in user input
for(String input : inputs) //Giving each word as input at a time and search for it in word String
{
for(String elmt:word)
{
if (elmt.contains(input) && elmt.contains("="))
{
String[] parts=elmt.split("\\=");
rewrite.add(parts[1]);
}
}
}
System.out.println(rewrite);
return rewrite; // RETURNS THE SYNONIM OF THE WORD
}
因此,在這里我考慮的是輸入使用定界符Comma(",")
因此我用Comma(",")
分割了輸入字符串,因為您在注釋中以空格作為定界符對問題進行了描述。
當您打印ArrayList時,自動輸出將以comma(, )
分開打印。
所以對於Input: hello,awesome
它將給出輸出為greeting, thanks
。
包含獲取完全匹配的內容,拆分文本並進行相應的匹配,將結果存儲在新數組列表中
如果您嘗試接受許多輸入,則需要在輸入&for循環周圍循環。
for循環已經遍歷所有單詞。
注意:我將contains
替換為startsWith
以防止您在等號的另一側抓住單詞
static ArrayList<String> word=Reading();
public static ArrayList<String> FindWord(){
ArrayList<String> rewrite=new ArrayList<>();
String userinput = "" ;
while (true) {
userinput=Chat();
if (userinput.equals("quit")) break;
for(String elmt:word){
if (elmt.startsWith(userinput) && elmt.contains("=")) {
String[] parts=elmt.split("\\=");
rewrite.add(parts[1]);
}
}
System.out.println(rewrite);
return rewrite; // RETURNS THE SYNONIM OF THE WORD
}
我真的不能說這是解決問題的最佳方法,因為似乎您需要一個Hashmap,而不是Arraylist
您可以創建另一個arraylist並將您的userinput值一個接一個地添加到該列表中。 您可以通過在每個循環的當前值之上為每個循環使用new來迭代此新創建的arraylist 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.