Предоставляю фрагмент программы.
В цикле while необходимо тройное условие, но никаким образом оно у меня не получается. Eсли ставлю только одно - все работает. В противном случае, когда условия 2 или 3, некоторые из них игнорируются и выполняется лишь одно. Нужно, чтобы walk(); закончился, когда либо программа "доходит" до границ обозначенного поля, либо истекает количество заданных шагов. Буду очень благодарна за помощь и объяснение моей ошибки
public class RandomWalk {
int steps=0;
int x = 0;
int y = 0;
int maxSteps=0;
int maxSize=0;
int count=0;
Random rand = new Random();
public RandomWalk(int max, int size) {
maxSteps=max;
maxSize=size;
x=0;
y=0;
}
...
public void takeStep() {
steps++;
int r = rand.nextInt(4);
if (r == 0) {
x++;
}
if (r == 1) {
x--;
}
if (r == 2) {
y++;
}
if (r == 3) {
y--;
}
}
public void walk(){
do {
takeStep();
}
while(Math.abs(x)<maxSize || Math.abs<maxSize || steps<=maxSteps);
}
....
}
В цикле while необходимо тройное условие, но никаким образом оно у меня не получается. Eсли ставлю только одно - все работает. В противном случае, когда условия 2 или 3, некоторые из них игнорируются и выполняется лишь одно. Нужно, чтобы walk(); закончился, когда либо программа "доходит" до границ обозначенного поля, либо истекает количество заданных шагов. Буду очень благодарна за помощь и объяснение моей ошибки
public class RandomWalk {
int steps=0;
int x = 0;
int y = 0;
int maxSteps=0;
int maxSize=0;
int count=0;
Random rand = new Random();
public RandomWalk(int max, int size) {
maxSteps=max;
maxSize=size;
x=0;
y=0;
}
...
public void takeStep() {
steps++;
int r = rand.nextInt(4);
if (r == 0) {
x++;
}
if (r == 1) {
x--;
}
if (r == 2) {
y++;
}
if (r == 3) {
y--;
}
}
public void walk(){
do {
takeStep();
}
while(Math.abs(x)<maxSize || Math.abs<maxSize || steps<=maxSteps);
}
....
}