少し奇妙な問題があります。
簡単な数独プログラムを書いています。この方法を除いて、すべてが完全に機能するようになりました。
public static void checkAnswerKey()
{
int rowCounter = 0;
int columnCounter = 0;
System.out.println("The answers that are correct are (F is incorrect): ");
for (rowCounter = 0; rowCounter <= 8; rowCounter += 1)
{
for (columnCounter = 0; columnCounter <= 8; columnCounter += 1)
{
if (gui.userInputFormattedArray[rowCounter][columnCounter].getText() == io.puzzleAnswerArray[rowCounter][columnCounter].toString())
{
gui.userInputFormattedArray[rowCounter][columnCounter].setBackground(gui.correctAnswer);
System.out.print(gui.userInputFormattedArray[rowCounter][columnCounter].getText() + " ");
}
else
{
gui.userInputFormattedArray[rowCounter][columnCounter].setBackground(gui.incorrectAnswer);
System.out.print(gui.userInputFormattedArray[rowCounter][columnCounter].getText() + io.puzzleAnswerArray[rowCounter][columnCounter].toString() + " ");
//System.out.print("F" + " ");
}
}
System.out.println();
}
これは、game.javaファイルから取得されます。
現在、このメソッドは、ユーザー入力を内部回答と照合することになっています。それは何をしますか。しかし、すべてが正しくないことがわかります。
io.javaファイルとgui.javaファイルからの宣言/インスタンス化は次のとおりです。
public class gui extends JFrame implements ActionListener{
..。
public static JFormattedTextField[][] userInputFormattedArray = new JFormattedTextField[9][9];
//Create the container.
public Container pane = getContentPane();
//The font the game uses.
public Font gameFont = new Font("Arial", Font.PLAIN, 30);
//Correct and incorrect answer colors.
static Color correctAnswer = new Color(100, 255, 100);
static Color incorrectAnswer = new Color(255, 100, 100);
これらの2つのメソッドは、コンストラクターで起動されます。
public void showTextFields()
{
int rowCounter = 0;
int columnCounter = 0;
for (rowCounter = 0; rowCounter <= 8; rowCounter += 1)
{
for (columnCounter = 0; columnCounter <= 8; columnCounter += 1)
{
userInputFormattedArray[rowCounter][columnCounter] = new JFormattedTextField();
pane.add(userInputFormattedArray[rowCounter][columnCounter]);
userInputFormattedArray[rowCounter][columnCounter].setFont(gameFont);
userInputFormattedArray[rowCounter][columnCounter].setHorizontalAlignment(JTextField.CENTER);
}
}
}
public void setTextFields()
{
String heldString;
boolean notEditable = false;
int rowCounter = 0;
int columnCounter = 0;
for (rowCounter = 0; rowCounter <= 8; rowCounter += 1)
{
for (columnCounter = 0; columnCounter <= 8; columnCounter += 1)
{
if (game.puzzleUserShownArray[rowCounter][columnCounter] != 0)
{
heldString = game.puzzleUserShownArray[rowCounter][columnCounter].toString();
userInputFormattedArray[rowCounter][columnCounter].setText(heldString);
userInputFormattedArray[rowCounter][columnCounter].setEditable(notEditable);
}
}
}
}
そして、これが答えの出所です。
public static Integer[][] puzzleAnswerArray = new Integer[9][9];
public void getPuzzle() throws FileNotFoundException
{
Scanner puzzlesInFile = new Scanner(new FileReader("C:\\Users\\owner\\Desktop\\eclipse\\projects\\Sudoku\\Sudoku\\src\\puzzles.dat"));
String searchParameter = "#puzzle" + intPuzzleSeed;
int rowCounter = 0;
int columnCounter = 0;
//Prints the search parameter into the console, ensuring accuracy with the RNG.
System.out.print(searchParameter);
System.out.println();
//
puzzlesInFile.findWithinHorizon(searchParameter, 0);
while (puzzlesInFile.hasNextInt())
{
for (rowCounter = 0; rowCounter <= 8; rowCounter += 1)
{
for (columnCounter = 0; columnCounter <= 8; columnCounter += 1)
{
puzzleAnswerArray[rowCounter][columnCounter] = puzzlesInFile.nextInt();
System.out.print(puzzleAnswerArray[rowCounter][columnCounter].toString() + " ");
}
System.out.println();
}
}
puzzlesInFile.close();
}
これで十分な情報になることを願っています。明らかな何かが欠けていますか?ちなみに、完成したパズルからのコンソール出力は次のとおりです。
正解は次のとおりです(Fは正しくありません):11 22 33 44 55 66 77 88 99 44 55 66 77 88 99 11 22 33 77 88 99 11 22 33 44 55 66 22 33 44 55 66 77 88 99 11 55 66 77 88 99 11 22 33 44 88 99 11 22 33 44 55 66 77 33 44 55 66 77 88 99 11 22 66 77 88 99 11 22 33 44 55 99 11 22 33 44 55 66 77 88
GUIは次のとおりです。
---編集:評判が10未満であるため、GUIを投稿できません。そこに着いたらすぐに、GUIの.pngを投稿します。---
私の推測では、「文字列」は同じですが、何らかの理由で同じものとして認識されていません。さらにコードを表示する必要がある場合はお知らせください。ただし、すべてをカバーしたと思います。