这是一个我坚持上学的课程。无法弄清楚为什么它不会给我一个平均和最大的。该程序运行50次,就像我想要的那样但不会为移动和总数添加值。
import java.util.*;
public class RandomWalk {
public static void main(String[] args) {
// TODO Auto-generated method stub
Random rand = new Random();
int location;
double average;
int greatest=0;
int moves = 0;
int total = 0;
int step;
for (int i = 0; i < 50; i++) {
location = 4;
step = rand.nextInt((2 - 1) + 1) + 1;
while (location < 1 || location > 7) {
moves ++;
if (step == 2){
location ++;
} else {
location --;
}
if (moves > greatest) {
greatest = moves;
total += moves;
}
}
}
average = total / 50;
System.out.println("The greatest number of steps: " + greatest);
System.out.println("The average number of steps: " + average);
}
}
修复了for循环,但它仍然没有给我平均值和最高值。
至于while (location < 1 || location > 7)
它应该运行直到该人站在位置1或位置7上。
这是给我的问题:
在“随机游走”中,一个人被放置在七米长的桥的中心。每个步骤随机向前或向后移动1米的人。 创建一个随机行走,确定该人在离开桥梁之前将走多少步。让应用程序平均进行50次试验,并显示平均步数和最大步数。
感谢帮助...
如果我将其更改为:`import java.util。*;
公共类RandomWalk2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Random rand = new Random();
double average;
int greatest=0;
int moves;
int total = 0;
int step;
step = rand.nextInt((2 - 1) + 1) + 1;
int location; //location of man on bridge
for(int i = 0; i < 50; i++)
{
moves = 0;
moves++;
location = 4;
total += moves;
while(true)
{
if (step == 2) {
location++;
} else {
location--;
}
if((location < 1) || (location > 7)) break;
}
if(moves > greatest) {
greatest = moves;
}
}
average = total / 50;
System.out.println("The greatest number of steps: " + greatest);
System.out.println("The average number of steps: " + average);
}
}
` 然后它会运行50次,但这个人只会移动1次,所以我的最大值和平均值总是显示为1。
答案 0 :(得分:4)
不,它不会循环50次,因为您的for
循环条件不正确。如果条件为for
,true
循环继续迭代,而不是false
。改变你的状况
for (int i = 0; i == 50; i++) {
到
for (int i = 0; i < 50; i++) {
然后它会一直运行到i < 50
为false
(50次)。
答案 1 :(得分:1)
您需要了解for循环的基础知识。
for(初始化;终止; 增量) { 声明(S) }
使用此版本的for语句时,请记住:
初始化表达式初始化循环;它被执行了 一旦,循环开始。当终止表达式求值为 假,循环终止。增量表达式在之后调用 每次迭代循环;这是完全可以接受的 表达式增加或减少值。
以下链接应该会有所帮助:
答案 2 :(得分:0)
location = 4;
step = rand.nextInt((2 - 1) + 1) + 1;
while (location < 1 || location > 7) {
..
}
何时位置小于1或大于7?
也是rgettman
提到的for循环