#java #for-loop
#java #для цикла
Вопрос:
Я был погружен в это задание в течение 2 дней, преследуя кроличьи норы в поисках возможных решений. Я начинающий Java, поэтому я уверен, что это не должно быть так сложно, как я это делаю.
Я пытаюсь запрограммировать печально известную Java-Bean-машину… Мой профессор хочет, чтобы путь к классу возвращал строковую переменную, которая содержит только «R» «L» . для представления пути выпавшего шара.
У каждого шара должен быть свой собственный путь… Я могу получить путь… но я не могу получить путь для печати в строке за пределами оператора for / if .
Вот его инструкции… на случай, если вы видите, неправильно ли я интерпретирую это.
Пожалуйста, помогите!! Заранее благодарю вас за то, что просеяли это….
мой код до сих пор ******** я обновил код, чтобы отразить предложения.. Спасибо… ***************** Новая проблема заключается в том, что он повторяет последовательность букв в строке… Мне нужна только строка из 6 символов….(LRLLRL)
public class Path {
StringBuilder myPath;
public Path() {
myPath = new StringBuilder();
}
void moveRight() {
myPath.append("R");
}
void moveLeft() {
myPath.append("L");
}
public void fallLevels(int levels) {
levels = 6;
for (int i = 0; i < (levels); i ) {
if (Math.random() < 0.5) {
this.moveRight();
} else {
this.moveLeft();
}
}
}
public String getPath() {
System.out.print(myPath.toString());
return myPath.toString();
}
}
} ****** Спасибо всем .. теперь этот класс возвращает правильную строку для одного шара…***************
вот мой код для нескольких шаров… Я могу получить длинную непрерывную строку из 6 последовательностей символов… Мне нужно, чтобы каждая последовательность была строкой с возможностью поиска…Я не уверен, нужно ли мне изменять класс Path или что-то в методе simulateGame() . Я думаю, что смогу принять это после этого горба… Еще раз спасибо….
public class BeanMachine {
int numberOfLevels;
int[] ballsInBins;
Path thePath = new Path();
public BeanMachine(int numberOfLevels) {
this.numberOfLevels = 6;
ballsInBins = new int[this.numberOfLevels 1];
// this.numberOfLevels
}
public void simulateGame(int number) {
//looping through each ball
for (int i = 0; i < numberOfLevels -1; i ) {
thePath.fallLevels(0);
}
thePath.getPath().toString();
}
*** это не весь код для этого класса… Я должен корректно использовать этот метод для продолжения….
Комментарии:
1.Добавить к
loop
(вместо того, чтобы сбрасывать его с каждой итерацией цикла).loop = "R";
илиloop = "L"
. Остальная часть вашего кода (вне метода, содержащего цикл) на самом деле ничего не делает.2. лол, я знаю…. Я чувствую, что я просто ухудшаю свой код с помощью проб и ошибок.
3. Хорошо, поэтому мне нужен StringBuilder для добавления элементов.. правильно? Кроме того, возможно, я мог бы опубликовать его указания… Я думаю, что я понимаю, зачем мне нужен moveRight и что он должен делать….
4.Выполнение
String
конкатенации сloop = loop "R";
илиloop = "R";
используетStringBuilder
внутренне. Но да, было бы эффективнее использовать aStringBuilder
.5. Да, вам нужно a
StringBuilder
для добавления строк, но вы не можете получить доступ к своейloop
переменной вне методаfallLevels
, если вы не создадитеloop
переменную класса или не вернетесьloop
в метод.
Ответ №1:
Проблема с вашим кодом:
if (Math.random() < 0.5) {
**loop = this.myPath = "R";**
} else {
**loop = this.myPath ="L";**
}
Измените это на:
if (Math.random() < 0.5) {
**loop = this.myPath "R";**
} else {
**loop = this.myPath "L";**
}
Просто добавил **, чтобы выделить, где в вашем коде есть ошибка
Комментарии:
1. Спасибо за ваше время и помощь. Я обновил свой код, он хочет, чтобы мы вызывали методы moveRight и Left … поэтому я попытался вызвать их в цикле.
2. Если приведенное выше отвечает на ваш вопрос, пожалуйста, примите его как ответ или если это помогло вам проголосовать. Удачи с вашим назначением
3. Я пометил это, но, поскольку я новичок, это не позволит мне повысить ваш ответ….. Я очень благодарен.
4. Продолжайте кодирование.. Удачи