Java — мне нужно напечатать эту строку символов в строку, которую я могу использовать вне цикла

#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 внутренне. Но да, было бы эффективнее использовать a StringBuilder .

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. Продолжайте кодирование.. Удачи