在java中,如何遍历单词中的每个字符,然后确定该字符的点,并不断为单词添加点



这是我无法理解的任务。这是我第一次真正了解Java,到目前为止,我发现它相当困难。我已经附上了作业PDF,这是我不成功的pointsProblem部分。

到目前为止,我有:

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;
import java.util.HashMap;
public class WordGames {
static HashMap<Character, Integer> valueOfCharacter;
static final String DICTIONARY = "dictionary.txt";
static int i;
static int wordCount;
static String line;
static String substringWordList;
static String[] randomSubstringResults = new String[23];
static FileReader listOfWordsFile;
static Scanner substringProblemInput;
static Scanner wordListFileScanner;
static {
substringProblemInput = new Scanner(System.in);
try {
listOfWordsFile = new FileReader(DICTIONARY);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
wordListFileScanner = new Scanner(listOfWordsFile);
while (wordListFileScanner.hasNextLine()) {
line = wordListFileScanner.nextLine();
randomSubstringResults[wordCount] = line;
wordCount++;
}
}
static {
valueOfCharacter = new HashMap<Character, Integer>();
valueOfCharacter.put('l', 1);
valueOfCharacter.put('e', 1);
valueOfCharacter.put('n', 1);
valueOfCharacter.put('i', 1);
valueOfCharacter.put('o', 1);
valueOfCharacter.put('r', 1);
valueOfCharacter.put('t', 1);
valueOfCharacter.put('s', 1);
valueOfCharacter.put('a', 1);
valueOfCharacter.put('u', 1);
valueOfCharacter.put('d', 2);
valueOfCharacter.put('g', 2);
valueOfCharacter.put('b', 3);
valueOfCharacter.put('c', 3);
valueOfCharacter.put('m', 3);
valueOfCharacter.put('p', 3);
valueOfCharacter.put('f', 4);
valueOfCharacter.put('h', 4);
valueOfCharacter.put('v', 4);
valueOfCharacter.put('w', 4);
valueOfCharacter.put('y', 4);
valueOfCharacter.put('k', 5);
valueOfCharacter.put('j', 8);
valueOfCharacter.put('x', 8);
valueOfCharacter.put('q', 10);
valueOfCharacter.put('z', 10);
}
static void gameMenuSelection() throws FileNotFoundException {
int getSelectionOption;
Scanner gameMenuSelectionInput = new Scanner(System.in);
System.out.println("Welcome to the Word Games program menu.");
System.out.println("Select from one of the following options.");
System.out.println("1. Substring problem.");
System.out.println("2. Points problem.");
System.out.println("3. Exit.");
System.out.print("Enter your selection: ");
getSelectionOption = gameMenuSelectionInput.nextInt();
switch (getSelectionOption) {
case 1:
substringProblemGame();
break;
case 2:
pointsProblemGame();
break;
case 3:
System.out.println("n" + "Goodbye!");
break;
default:
System.out.println("Invalid option. Try again.");
break;
}
}
static void substringProblemGame() throws FileNotFoundException {
String randomSubstringInput;
String wordHasInfix = " - infix";
String wordHasPrefix = " - prefix";
String wordHasSuffix = " - suffix";
String nothingIsFound = " - not found";
System.out.println("n" + "Substring problem.");
System.out.print("Enter a substring: ");
randomSubstringInput = substringProblemInput.next();

for (i = 0; i < wordCount; i++) {
substringWordList = randomSubstringResults[i];
boolean found = false;
if (randomSubstringResults[i].startsWith(randomSubstringInput)) {
substringWordList = substringWordList + wordHasPrefix;
found = true;
}
if (randomSubstringResults[i].endsWith(randomSubstringInput)) {
substringWordList = substringWordList + wordHasSuffix;
found = true;
}
if (randomSubstringResults[i].contains(randomSubstringInput)) {
substringWordList = substringWordList + wordHasInfix;
found = true;
}
if (!found) {
System.out.println(substringWordList + nothingIsFound);
} else {
System.out.println(substringWordList);
}
}
System.out.println();
gameMenuSelection();
}
static void pointsProblemGame() throws FileNotFoundException {

System.out.println("Points problem.");
}

public static void main(String[] args) throws FileNotFoundException {

gameMenuSelection();
}
}

我尝试实现HashMap,但不知道如何使其工作。我曾经试着从极客到极客做这件事,但又一次失败了。我可能只是没用什么的。

如有任何帮助,我们将不胜感激。

谢谢!

您已经用字母及其相关分数填充了HashMap。现在,您应该能够通过迭代每个单词中的每个字符并从Map中获取值来获取每个单词的相关分数。例如,

int score = 0;
for (int i = 0; i < yourArray.length; i++) {
for (int j = 0; j < yourArray[i].length(); j++) {
score += hashMap.get(yourArray[i].getCharAt(j));
}
}

以下是hashmap的文档,您可以在其中查看它的所有方法及其用途。get方法接收键,在您的情况下,键将是字符,并返回值(相关的分数(。https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html

相关内容

最新更新