我的随机行走Java程序是';它不能正常工作。有办法解决吗?

我的随机行走Java程序是';它不能正常工作。有办法解决吗?,java,Java,所以,我一直在写这个程序,叫做随机行走桥程序。因此,我们必须进行50次试验,得出平均步骤数和最大步骤数。我已经做了这部分,但我坚持的部分是这个,在下面的图片。 [1] : 到目前为止,这是我的代码,我的代码只有中间的点,不移动,当我要求长度时,EX:3。这座桥有6条破折号,而不是3条。我的成绩- |---*---| |---*---| |---*---| |---*---| |---*---| |---*---| 主类- public class BridgeMain { public

所以,我一直在写这个程序,叫做随机行走桥程序。因此,我们必须进行50次试验,得出平均步骤数和最大步骤数。我已经做了这部分,但我坚持的部分是这个,在下面的图片。 [1] :

到目前为止,这是我的代码,我的代码只有中间的点,不移动,当我要求长度时,EX:3。这座桥有6条破折号,而不是3条。我的成绩-

|---*---|

|---*---|

|---*---|

|---*---|

|---*---|

|---*---|

主类-

public class BridgeMain {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        KeyboardReader reader = new KeyboardReader();
        BridgeSecond object = new BridgeSecond();
        System.out.println("Length:");
        int length = reader.readInt();
        object.Output(length);
        object.bridge(length);
    }

}
二等舱

    public void bridge(int sizeOfbridge) {
                
        Random rand = new Random();
                
        int avg=0; int max=0; int min=0;
        int position = 0;

        for (int i=0;i<50;i++) {
            
            position=0; int count=0;
            
            while (position!=4 && position!=-4) {
                int number= rand.nextInt((1) + 1) + 0;
                if (number==1) {
                    position++;
                }
                if (number==0) {
                    position--;
                }
                count++;
            }
            avg=avg+count;
            
            if (count>max) {
                max=count;  
            }

            System.out.print("|");
            for (count=1;count<=sizeOfbridge;count++) {
                System.out.print("-");
            }
            System.out.print("*");
     
            for (count=1;count<=sizeOfbridge;count++) {
                System.out.print("-");
            }
            System.out.println("|");
        }
    }
}
public void桥(intsizeofbridge){
Random rand=新的Random();
平均整数=0;最大整数=0;最小整数=0;
int位置=0;
对于(int i=0;imax){
最大值=计数;
}
系统输出打印(“|”);

对于(count=1;count请将ASCII内容的图片显示为文本,而不是文本图片的链接。请提供一个示例来说明您的问题。您的代码中打印破折号和星号等的部分将打印50行与随机行走无关的相同行。这是因为该代码仅依赖于n变量
sizeOfbridge
,在循环的50次迭代过程中,该变量从未改变。因此,生成您在图像中显示的内容的代码在哪里?@Steve,该代码位于第二类。无论您做什么,它始终位于底部,而在此循环之后,位置只有两个可能的值:4和-4。您可以uld将整个循环简化为一个简单的
position=4*(rand.nextInt(1)==0?-1:1)
。当然,在每次循环迭代中都会增加
count
。但以后不会对该值做任何操作。
(count=1;count请将ASCII内容的图片显示为文本,而不是文本图片的链接。请提供一个示例来说明您的问题。您的代码中打印破折号和星号等的部分将打印50行与随机行走无关的相同行。这是因为该代码仅依赖于n变量
sizeOfbridge
,在循环的50次迭代过程中,该变量从未改变。因此,生成您在图像中显示的内容的代码在哪里?@Steve,该代码位于第二类。无论您做什么,它始终位于底部,而在此循环之后,位置只有两个可能的值:4和-4。您可以uld将整个循环简化为一个简单的
position=4*(rand.nextInt(1)==0?-1:1)
。当然,在每次循环迭代中都会增加
count
。但以后不会对该值做任何操作。
for(count=1;count)