Я делаю приложение, похожее на карточку, для моего проекта по разработке программного обеспечения для средней школы. Я могу хранить слова и их соответствующие переводы, записывая их в файл, но мне было интересно, есть ли способ прочитать их в 2d массив.

Могу ли я разделить их запятыми или другим символом?

Дополнительно был бы способ связать слова и их соответствующие переводы. Например, если я назвал слово «x», есть ли функция для вызова слова «переведенный x», если оно находится в массиве?

Спасибо куча !!

0
A. Price 2 Май 2017 в 04:38

2 ответа

Лучший ответ

Давайте разберем проблему немного.

  • прочитать файл
  • проанализируйте каждую строку в файле, чтобы определить word и translation
  • хранить word и translation в структуре данных (предложение @Glen Pierce об использовании карты является хорошим)

Допустим, наш файл выглядит следующим образом, мы используем запятую для разделения слова и перевода (это также объем моего испанского словаря):

hello,hola
good,bueno

Теперь немного кода, давайте прочитаем файл на карту.

// a map of word to translation
Map<String, String> wordMap = new HashMap<String, String>();

// a class that can read a file (we wrap the file reader in a buffered reader because it's more efficient to read a file in chunks larger than a single character)
BufferedReader fileReader = new BufferedReader(new FileReader("my-file.txt"));

// a line from the file
String line;

// read lines until we read a line that is null (i.e. no more lines)
while((line = fileReader.getLine()) != null) {
    // split the line, returns an array of parts
    String[] parts = line.split(",");

    // store the parts in meaningful variables
    String word = parts[0];
    String translation = parts[1];

    // now, store the word and the translation in the word map
    wordMap.put(word, translation);
}

// close the reader (note: you should do this with a try/finally block so that if you throw an exception, you still close the reader)
fileReader.close();

Итак, теперь у нас есть карта, в которой есть все слова и переводы в файле. По заданному слову вы можете получить перевод следующим образом:

String word = "hello";
String translation = wordMap.get(word);
System.out.println(word + " translates to " + translation);

Выход:

hello translates to hola

Я предполагаю, что следующим шагом будет дать пользователю слово и попросить вас вернуть правильный перевод. Я оставлю это тебе.

0
Matt 2 Май 2017 в 06:40

Вы можете посмотреть на Карты. Таким образом, вы можете искать каждое слово по самому слову, а не перебирать массив. Карты используют пары Key Value. К сожалению, они однонаправлены (вы не можете найти ключ по его значению). https://docs.oracle.com/javase/ 7 / документы / API / Java / Util / Map.html

1
Glen Pierce 2 Май 2017 в 01:42