我正在制作一个计划,帮助学生为我的学校学习第二语言。该程序的主要功能是闪存卡。我遇到的麻烦是弄清楚如何存储所说的单词及其各自的翻译。阵列是最好的方法吗?我的老师已经在阵列上谈了两秒钟,所以我只知道它们的一般用途。
另外,我如何调用那些存储的相应字符串,以便用户可以看到它们?如果有更好,更有效的方式来存储它们,我很想知道。
编辑:我还计划允许用户通过文本字段或某种类型的内容输入单词,如果这会改变答案。
答案 0 :(得分:0)
我认为您应该将所说的单词及其各自的翻译存储到HashMap中,其中所述单词是关键,而值是翻译。要获得存储,只需按键查找。
答案 1 :(得分:0)
Map<String, String>
是将String
映射到另一个Map<String, String> translatedWords = new HashMap<>();
translatedWords.put("Hello", "Hola");
System.out.println(translatedWords.get("Hello"));
>> "Hola"
的完美数据类型。如果我是你,我肯定会阅读文档here。
例如:
=INDEX(OFFSET($A$1:$A$5,1,0,3,1),ROW(),1)
答案 2 :(得分:0)
您可以使用2D数组,因为它使用行和列。请考虑以下示例,它是西班牙语:
String[][] array = new String[][]{
{"You","Tu"},
{"Sandwich","Bocadillo"},
{"You eat a sandwich","Tu comes un bocadillo"}
};
请查看此Javadoc以获取更多信息:https://docs.oracle.com/cd/E58500_01/pt854pbh1/eng/pt/tpcr/task_CreatingandPopulatingMulti-DimensionalArrays-071663.html#topofpage
修改强>
看起来你正试图让用户输入他们自己的单词和翻译......除非你使用文件读写,否则这将是一个非常困难的过程。这是通过文件编写存储翻译的一种方式示例,如果我了解有关2D
ArrayLists
的更多信息,我会回复您。
Scanner sc = new Scanner(System.in);
System.out.println("Please enter a word:");
String word = sc.nextLine();
//You can also use textfields: word = textfield.getText();
System.out.println("Please enter the translation:");
String trans = sc.nextLine();
//Always use UTF-8 if you are using any European or American alphabets
PrintWriter pw = new PrintWriter("lang.txt", "UTF-8");
/*
* You can name the file anyting you want, with any extension:
*"Cake.weirdFile, Juice.lump, Ilike.Chicken"
*it should be readable by Java as long as you use UTF-8
*/
pw.print(word);
pw.println(trans);
pw.close();
//Make sure to catch/throw FileNotFoundException & UnsupportedEncodingException
您可以阅读闪存卡测验/评论文件:
Scanner sc2 = new Scanner(new File("lang.txt"));
//Make sure to catch/throw FileNotFoundException
String[] wordAndTrans = sc2.nextLine().split(" ");
sc2.close();
System.out.println("The translation of '"
+ wordAndTrans[0] + "' is: '" + wordAndTrans[1] + "'");
尽管此代码有效,但我不建议复制/粘贴此代码,因为它的布局方式可能与您的代码不兼容。这只是Scanners
,PrintWriters
和String
拆分的示例用法,因此您可以将翻译保存到文件中各自的行中。
答案 3 :(得分:0)
它可以被视为一个简单的,也是具有挑战性的。如果您期望一个简单的想法,那么您可以使用地图。然后将密钥存储为第一语言单词,将值存储为第二语言单词,这些是地图实现
HashMap (if you need more speed then use this implementation)
Map<String,String> translatedValues = new HashMap();
LinkedHahMap (If you need the data as the same oreder of insertion)
TreeMap (Less speed but sorted one)
答案 4 :(得分:0)
也称为属性文件
不要使用Hashmaps和数组使代码混乱。您还可以在不编辑任何Java代码的情况下获得其他翻译
属性文件是一个简单的文本文件。您可以使用几乎任何文本编辑器
创建和维护属性文件
# This is the default LabelsBundle.properties file
s1 = computer
s2 = disk
s3 = monitor
s4 = keyboard
要支持其他区域设置,您的本地化程序将创建一个包含已翻译值的新属性文件。不需要更改源代码,因为您的程序引用了键,而不是值。
# This is the LabelsBundle_de.properties file
s1 = Computer
s2 = Platte
s3 = Monitor
s4 = Tastatur
Locale currentLocale;
ResourceBundle labels = ResourceBundle.getBundle("LabelsBundle", currentLocale);
String computer = labels.getString("s1");