Java HashMap出人意料地为;空";
我正在为我的Java课程做一个项目。我写了一个TicTacToe程序,但我没有检查所有的方法,只检查了put方法和sort方法。我有一个空哈希映射,而不是其中的1 这是我在控制台中看到的:Java HashMap出人意料地为;空";,java,Java,我正在为我的Java课程做一个项目。我写了一个TicTacToe程序,但我没有检查所有的方法,只检查了put方法和sort方法。我有一个空哈希映射,而不是其中的1 这是我在控制台中看到的: Input your column 1 Input your row 1 null(ticTacToe.toConsole();) 哪里有错误 Tictaoe测试等级: package TicTac; import java.util.Scanner; public class TicTacToeTes
Input your column
1
Input your row
1
null(ticTacToe.toConsole();)
哪里有错误
Tictaoe测试等级:
package TicTac;
import java.util.Scanner;
public class TicTacToeTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
TicTacToe ticTacToe = new TicTacToe();
System.out.println("Input your column");
int column = scanner.nextInt();
System.out.println("Input your row");
int row = scanner.nextInt();
ticTacToe.selection(column,row);
ticTacToe.toConsole();
}
}
和主TicTacToe类:
package TicTac;
import java.util.ArrayList;
import java.util.HashMap;
public class TicTacToe {
HashMap<Integer, String> board = new HashMap<>();
public void selection(int column, int row) {
String xOrO = "x";
if (column == 1 && row == 1) {
board.put(1,xOrO);
} else if (column == 1 && row == 2) {
board.put(2,xOrO);
} else if (column == 1 && row == 3) {
board.put(3,xOrO);
} else if (column == 2 && row == 1) {
board.put(4,xOrO);
} else if (column == 2 && row == 2) {
board.put(5,xOrO);
} else if (column == 2 && row == 3) {
board.put(6,xOrO);
} else if (column == 3 && row == 1) {
board.put(7,xOrO);
} else if (column == 3 && row == 2) {
board.put(8, xOrO);
} else if (column == 3 && row == 3) {
board.put(9,xOrO);
}
else {
System.out.println("Wrong data");
}
}
public void checker() {
for (int i = 1; i < 2; i++) {
if (board.get(1).equals(board.get(2)) &&
board.get(2).equals(board.get(3))){
System.out.println(board.get(1) + " player won!");
} else if (board.get(4).equals(board.get(5)) && board.get(5).equals(board.get(6))){
System.out.println(board.get(4) + " player won!");
} else if (board.get(7).equals(board.get(8)) && board.get(8).equals(board.get(9))) {
System.out.println(board.get(7) + " player won!");
} else if (board.get(1).equals(board.get(4)) && board.get(4).equals(board.get(7))) {
System.out.println(board.get(1) + " player won!");
} else if (board.get(2).equals(board.get(5)) && board.get(5).equals(board.get(8))) {
System.out.println(board.get(2) + " player won!");
} else if (board.get(3).equals(board.get(6)) && board.get(6).equals(board.get(9))) {
System.out.println(board.get(3) + " player won!");
} else if (board.get(1).equals(board.get(5)) && board.get(5).equals(board.get(8))) {
System.out.println(board.get(1) + " player won!");
} else if (board.get(3).equals(board.get(5)) && board.get(5).equals(board.get(7))) {
System.out.println(board.get(3) + " player won!");
}
}
}
public void toConsole(){
for (int i = 0; i < board.size(); i++) {
System.out.println(board.get(i));
}
}
}
package-TicTac;
导入java.util.ArrayList;
导入java.util.HashMap;
公共类Tictatcoe{
HashMap board=新的HashMap();
公共空白选择(整数列,整数行){
字符串xOrO=“x”;
if(列==1&&行==1){
董事会决议(1,xOrO);
}else if(列==1和行==2){
董事会决议(2,xOrO);
}else if(列==1和行==3){
董事会主席(3,xOrO);
}else if(列==2&&row==1){
董事会决议(4,xOrO);
}else if(列==2&&row==2){
董事会决议(5,xOrO);
}else if(列==2和行==3){
董事会主席(6,xOrO);
}else if(列==3&&row==1){
董事会主席(7,xOrO);
}else if(列==3和行==2){
董事会主席(8,xOrO);
}else if(列==3&&行==3){
董事会表决权(9,xOrO);
}
否则{
System.out.println(“错误数据”);
}
}
公共作废检查器(){
对于(int i=1;i<2;i++){
如果(board.get(1).等于(board.get(2))&&
board.get(2).equals(board.get(3))){
System.out.println(board.get(1)+“玩家赢了!”);
}else if(board.get(4.equals)(board.get(5))和&board.get(5.equals)(board.get(6))){
System.out.println(board.get(4)+“玩家赢了!”);
}else if(board.get(7.equals)(board.get(8))和&board.get(8.equals)(board.get(9))){
System.out.println(board.get(7)+“玩家赢了!”);
}else if(board.get(1.equals)(board.get(4))和&board.get(4.equals)(board.get(7))){
System.out.println(board.get(1)+“玩家赢了!”);
}else if(board.get(2).equals(board.get(5))和&board.get(5).equals(board.get(8))){
System.out.println(board.get(2)+“玩家赢了!”);
}else if(board.get(3.equals)(board.get(6))和&board.get(6.equals)(board.get(9))){
System.out.println(board.get(3)+“玩家赢了!”);
}else if(board.get(1).equals(board.get(5))和&board.get(5).equals(board.get(8))){
System.out.println(board.get(1)+“玩家赢了!”);
}else if(board.get(3.equals)(board.get(5))和&board.get(5.equals)(board.get(7))){
System.out.println(board.get(3)+“玩家赢了!”);
}
}
}
public-void-toConsole(){
对于(int i=0;i
在toConsole()
函数中,有一个从索引0开始的循环。此时板大小为1。因此循环打印出board.get(0)的结果并结束。您的toConsole方法逻辑不正确。您正试图从HashMap
获取0
键处的元素,而HashMap
在1
键处有对象
更改为如下所示的console方法:
public void toConsole() {
for(Entry<Integer, String> entry : board.entrySet()) {
System.out.println("key = "+entry.getKey() + ", Value = "+entry.getValue());
}
}
public void toConsole(){
for(条目:board.entrySet()){
System.out.println(“key=“+entry.getKey()+”,Value=“+entry.getValue());
}
}
请阅读有关HashMap实现的一些基础知识,网址为程序的输入是什么,控制台上的输出是什么?此外,字符串应该用双引号表示。然后,例如board.put(9,xOrO);应改为董事会。put(9,“xOrO”);你犯了什么样的错误?输入错误和与错误关联的代码。你不能期望人们通读整个代码,然后告诉你它有什么问题……我的循环中有这样一个问题I
for(inti=0;i<1;i++)
。变量i在第一次迭代中为0。然后循环结束,因为在下一次迭代中i==1。