【发布时间】:2025-12-08 02:30:01
【问题描述】:
这是一个我无法理解的任务。这是我对 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,但不知道如何让它工作。我曾尝试从geeksforgeeks 执行此操作,但再次失败。我可能只是没用什么的。
任何帮助将不胜感激。
谢谢!
【问题讨论】:
-
提示:
List<Character> onePointCharacters = "aeilnorstu".chars().mapToObj(e->(char)e).collect(Collectors.toList());,或者更好:Set<Character> onePointCharacterSet = "aeilnorstu".chars().mapToObj(e->(char)e).collect(Collectors.toSet());。然后你只需要弄清楚如何将你的字符串变成单词,然后计算出每个单词中字符列表的总和。 -
这似乎比我认为我需要提供的更先进。我在 Java 上苦苦挣扎,请问您还有什么建议吗?
-
使用数组可能会更好。小写字符 c 的值是 val[c - 'a'] = x.
标签: java arrays hashmap java.util.scanner filereader