为什么我在这个程序中收到“/ by zero”错误?

-3 java

/**
 * Write a description of class TicTacToe here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */

import java.util.Scanner;

public class TicTacToe
{
    public static void main(){
        Scanner s = new Scanner(System.in);
        int state = 0, turn = 1, choice, drawcheck=0;
        
        for(int end=0; end==0; end=end){
            System.out.println("\u000c");
            for(int i =1; i<10; i++){
                if(state%(3^i)==0){
                    System.out.print(" ");
                }
                else if(state%(3^i)==1){
                    System.out.print("X");
                }
                else{
                    System.out.print("O");
                }
                if(i%(3^i)==0){
                    System.out.println("");
                }
                else{
                    System.out.print("|");
                }
            }
            
            System.out.println("Enter State (max 59048)");
            state=s.nextInt();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图制作一个井字游戏,但由于某种原因,这会出现除以零错误?我是一个绝对的编码菜鸟,有人可以帮忙吗?(我知道这不是游戏,我试图隔离部分,这个错误)

Ect*_*cto 9

我有一种感觉,您正在尝试将模 3 用于 i 的幂。

然而,^符号意味着异或,而不是幂,所以它发生了,你得到 3 % 0 - 这基本上是零除法。

如果你想要 3 的幂次幂,你需要 Math.pow(3, i)