Java豆机
以下是我要完成的任务: 编写一个程序来激发 你的程序应该 提示用户输入 球和球中的槽数 机器。模拟每个物体的下落 通过打印球的路径 前Java豆机,java,arrays,Java,Arrays,以下是我要完成的任务: 编写一个程序来激发 你的程序应该 提示用户输入 球和球中的槽数 机器。模拟每个物体的下落 通过打印球的路径 前 输入球数:5 输入插槽数:7 LRLRRLRLLLLLRRLLR LRLLRRRRRRLRRL\u0 __00 以下是我目前的代码: import javax.swing.JOptionPane; public static void main(String[] args) { int balls=0;
输入球数:5
输入插槽数:7
LRL
RRLRLLL
LLRRLLR
LRLLRRR
RRRLRRL
\u0
__0
0 以下是我目前的代码:
import javax.swing.JOptionPane;
public static void main(String[] args) {
int balls=0;
int slots=0;
char [] direction= new char [slots];
int slot=0;
int i=0;
int path=0;
balls= Integer.parseInt(JOptionPane.showInputDialog("Enter" +
" the number of balls to be dropped:"));
slots= Integer.parseInt (JOptionPane.showInputDialog("Enter " +
"the number of slots:"));
for (int j=1;j<=balls;j++){
while(i<slots){
path= (int)(Math.random()*100);
if (path <50){
direction [slots]='L';
}
else{
direction [slots]='R';
}
i++;
slot++;
}
System.out.println("The pathway is" +direction[0]+direction[1]+direction[2]+direction[3]+direction[4]);
}
}
import javax.swing.JOptionPane;
公共静态void main(字符串[]args){
int=0;
int插槽=0;
字符[]方向=新字符[插槽];
int槽=0;
int i=0;
int路径=0;
balls=Integer.parseInt(JOptionPane.showInputDialog(“回车”)+
“要丢弃的球数:”);
slots=Integer.parseInt(JOptionPane.showInputDialog(“输入”)+
“插槽数量:”);
对于(int j=1;j首先,我在方向[slots]='L';
(或'R'
)行上获得了一致的阵列索引边界外异常。这是因为方向总是长度为0,因为当插槽为0时,将其初始化为插槽。移动行
char [] direction= new char [slots];
输入到插槽之后
接下来,您总是将“L”或“R”分配到数组结束后的位置。这是我获得ArrayIndexOutOfBoundsException
的另一个原因。将分配更改为
direction[i] = 'L'; // or 'R'
接下来,在while
循环之后,您不会重置i
。因此,仅为第一个球计算路径,然后对所有其他球重复使用路径。我会将其改为for
循环,如下所示:
for (i = 0; i < slots; i++) {
// your code here (make sure you don't change i inside the loop)
}
(i=0;i{
//这里是您的代码(确保在循环中不更改i)
}
最后,正如其他人所说,您应该使用循环来打印路径。您知道方向
数组的长度(如果您不知道,它是方向.长度
),因此您可以通过循环来打印每个字母
一旦您进行了这些更改,您的程序应该可以运行(编辑:,但它不跟踪每个球最终进入的位置)。它仍有一些改进的空间,但找到这些东西是乐趣的一部分,不是吗?好吧,首先,我得到了一个一致的阵列索引边界外感知行方向[slots]='L';
(或'R'
)。这是因为方向
的长度始终为0,因为当插槽
为0时,您将其初始化为插槽
。请移动该行
char [] direction= new char [slots];
输入到插槽之后
接下来,您总是将“L”或“R”分配到数组结束后的位置。这是我获得ArrayIndexOutOfBoundsException
的另一个原因。将分配更改为
direction[i] = 'L'; // or 'R'
接下来,在while
循环之后,您不会重置i
。因此,仅为第一个球计算路径,然后对所有其他球重复使用路径。我会将其改为for
循环,如下所示:
for (i = 0; i < slots; i++) {
// your code here (make sure you don't change i inside the loop)
}
(i=0;i{
//这里是您的代码(确保在循环中不更改i)
}
最后,正如其他人所说,您应该使用循环来打印路径。您知道方向
数组的长度(如果您不知道,它是方向.长度
),因此您可以通过循环来打印每个字母
一旦你做了这些更改,你的程序应该可以运行(编辑:,除了它不跟踪每个球最后进入哪个位置)。它仍然有一些改进的空间,但找到这些东西是乐趣的一部分,不是吗
在我的最后一行代码中,我试图打印路径,我必须基本上猜测用户选择的插槽数量。有更好的打印方法吗
使用for循环和System.out.print()
如何打印用户在如上所示的模式中输入的数字“balls”
对于每个插槽,您需要记录在该插槽中结束的球数,以及任何插槽的最大值。给定这两个值,您可以在每个插槽上循环,并使用嵌套循环打印适当次数的“\u1”或“0”
我的代码还有其他问题吗
您似乎只打印最后一个落下的球的路径,而不是每个球的路径,但这可能只是因为您的缩进不清晰。发布格式正确的完整代码
您的示例输出似乎是从控制台读取输入,而不是使用swing
您声明变量太早。最好在首次使用时声明变量,如果变量没有更改,请将其标记为final
。如果您有:
final int slots= Integer.parseInt (...
而不是
int slots = 0;
...
slots= Integer.parseInt (...
那么至少有一个bug会被编译器捕获
在我的最后一行代码中,我试图打印路径,我必须基本上猜测用户选择的插槽数量。有更好的打印方法吗
使用for循环和System.out.print()
如何打印用户在如上所示的模式中输入的数字“balls”
对于每个插槽,您需要记录在该插槽中结束的球数,以及任何插槽的最大值。给定这两个值,您可以在每个插槽上循环,并使用嵌套循环打印适当次数的“\u1”或“0”
我的代码还有其他问题吗
您似乎只打印最后一个落下的球的路径,而不是每个球的路径,但这可能只是因为您的缩进不清晰。发布格式正确的完整代码<