Java System.out.println不';t在控制台中显示文本(IntelliJ)

Java System.out.println不';t在控制台中显示文本(IntelliJ),java,intellij-idea,Java,Intellij Idea,我正在编写一个程序,其部分如下所示: public class Portal { private String name; private int[] positions; // positions of "ship" private static int moves = 0; // moves made by player to sink a ship public static int shot;

我正在编写一个程序,其部分如下所示:

public class Portal {

    private String name;
    private int[] positions;              // positions of "ship"
    private static int moves = 0;         // moves made by player to sink a ship
    public static int shot;               // the value of position given by player
    private int hits = 0;                 // number of hits
    private int maxSize = 4;              // max size of ship (the size will be randomized)
    int first;                            // position of 1st ship block
    int size;                             // real size of ship (randomized in setPortal method)

    public void checkIfHit(){
        for (int i : positions){
            if (i == shot){
                System.out.println("Hit confirmed");
                hits++;
            } else if (hits == positions.length){
                System.out.println("Sunk");
            } else {
                System.out.println("Missed it");
            }
        }
        moves++;
    }

    public void setPortal(){
        size = 1 + (int)Math.random()*maxSize;
        for (int i = 0; i < size - 1; i++){
            if (i == 0){
                positions[i]= 1 + (int)Math.random()*positions.length;
                first = positions[i];
                System.out.println(positions[i]);
                continue;
            }
            positions[i]= first + 1;
            System.out.println(positions[i]);

        }
    }
}

public class Main{

    public static void main(String[] args){
        // write your code here
        Portal p1 = new Portal();
        p1.setPortal();
    }
}
公共类门户{
私有字符串名称;
私有int[]位置;//船的位置
私有静态int moves=0;//玩家击沉船只的移动
public static int shot;//玩家给出的位置值
private int hits=0;//命中数
private int maxSize=4;//船舶的最大尺寸(尺寸将随机化)
int first;//第一个船舱的位置
int size;//船舶的实际尺寸(在setPortal方法中随机)
公共无效checkIfHit(){
用于(int i:职位){
如果(i==shot){
系统输出打印项次(“命中确认”);
hits++;
}else if(hits==positions.length){
系统输出打印项次(“沉没”);
}否则{
System.out.println(“遗漏”);
}
}
移动++;
}
公共门户{
size=1+(int)Math.random()*maxSize;
对于(int i=0;i
代码分为两个Java.class文件

我要处理的问题是使用
p1.setPortal()在IntelliJ控制台中不显示文本。但该程序运行正常并返回0。
当我把
System.out.println
放在main以外的方法中(也放在单独的类文件中)时,我在另一个程序中没有这样的问题。
出现这种问题的原因可能是什么?

它应该正确地抛出一个异常,因为您忘记初始化整数数组。 看看这条线:


对于整数数组,Java的默认值为null。所以你的for甚至不会循环槽。唯一让我感到奇怪的是为什么没有异常..

不,不应该,因为java有默认构造函数,它将返回null(NullPointerException),但是感谢-rep@spandey15@spandey15不应该,因为它是一个实例变量,默认为
null
。这会导致出现
NullPointerException
无法保证
setPortal
总是打印某些内容
size
可以为1,并且不会输入
循环的
。这正是问题的主要原因。我还将实现位置固定为“更随机”(我错误地转换了类型,“大小”和“位置[0]”的核心值始终为0。感谢您的帮助。