因此,在寻找我的问题的答案时,我只能找到地图结构或只是比较字符串和必须编码停止。我需要能够在语言之间进行翻译并打印出翻译,并让用户能够再次要求翻译另一个单词。我有两串10个匹配的单词,从英语到俄语。我需要能够使用目标(或键)来查找翻译。我还需要使用顺序搜索。
import java.util.*;
public class CISCLabTwo
{
public static void main (String [] args)
{
Scanner keyBoard = new Scanner (System.in);
String [] english = {"House", "Fat", "Monkey", "Trip", "Jumbo", "Chicken", "Unicorn", "Radio", "Shack", "Xylophone"};
String [] russian = {"Dom", "Zhir", "Obeziana", "Poezdka", "Ogromniy", "Kuricha", "Edinorog", "Raadiioo", "Hizhina", "Ksilofon"};
System.out.println ("House, Fat, Monkey, Trip, Jumbo, Chicken, Unicorn, Radio, Shack, Xylophone");
System.out.println("Enter a Word From Above to Translate to Russian: ");
int i = 0;
for (i = 0; i < english.length; i++)
if (english[i]=target){
return i;
}
else{
return - 1;
}
}//end class
public static int translate (String [] english, String target)
}//end main
答案 0 :(得分:2)
http://en.wikipedia.org/wiki/Sequential_search
基本上,您在英语数组中为匹配创建for循环检查。 当你有匹配时,函数将返回给定数组中字符串的位置。使用此职位获得相应的俄语翻译。
public static int translate(String [] english, String target)
{
for(int i = 0; i < english.length; i++){
if(english[i].equals(target)){
// Found on position i
return i;
}
}
return -1;
}
您可能希望重命名该函数,因为它不会真正转换,只返回整数而不是字符串。
答案 1 :(得分:1)
首先,以这种方式单独处理两个数组令人困惑。您可能想在同一个文件中创建一个额外的类:
class Word {
String english;
String russian;
}
然后您可以创建以下数组:
Word[] words = new Word[10];
这样,您可以使用单独的方法进行翻译,如下所示:
String translate(String eng) {
for (Word w : words) if (eng.equals(w.english)) return w.russian;
return null;
}
答案 2 :(得分:0)
至于你的代码,正确的检查是你的for-next循环
if (english[i].equals(target))
return i;
另外,考虑一下这个词是否重要。在你的例子中,“House”和“house”一样吗?如果情况无关紧要,你应该使用 equalsIgnoreCase()而不是equals,即
if (english[i].equalsIgnoreCase(target))
return i;
(稍后搬家因为这似乎是家庭作业)
通过使用两个ArrayList来保存单词,你可以节省一些工作,因为ArrayList有一个indexOf()方法来进行线性搜索。 (我不知道为什么Arrays实用程序类没有indexOf方法。)
也就是说,基于地图的结构似乎更合适(并且效率更高)。
答案 3 :(得分:0)
您需要做的就是获取索引,打印俄语单词然后break
循环。
如果只是在main中打印,那么你可以这样做。
for (i = 0; i < english.length; i++)
{
if (english[i].equals(target))
{
System.out.println(russian[i]; //Print the russian word
break; //stop looping
}
}
否则,如果你想让你的翻译方法返回单词的索引,你就可以这样做
public static int translate (String [] english, String target)
{
for (i = 0; i < english.length; i++)
{
if (english[i].equals(target))
return i; // No need for the else statement as it would
// fail on first iteration if it wasnt the word
}
return -1; // After loop exits return -1 as was not found
}
然后在主要你会打电话
String russianWord = russian[translate(english, target)];