Как добавить значения в пустую строку для l oop? - PullRequest
0 голосов
/ 26 февраля 2020

У меня возникли проблемы с выяснением, как добавить значения в конец строки. В данном коде нам дано значение кубика, и мы должны напечатать его, используя «*». Например, значение пять будет иметь два * в первом ряду, 1 во втором и 2 в третьем. Для этого я создал для l oop, который завершается после достижения значения, и пытался добавить пустую строку. Я не уверен, как представить это как кости с определенным количеством звезд в каждом ряду. Я пробовал другие методы, такие как поиск общего значения сначала и создание второго, в то время как l oop, чтобы добавить звезды, но не могу понять это.

public String toString() {
    String stars = " ";

    for (int i = 0; i < value(); i++) {
        if (stars.contains("* * *")){
            //next line
        }
        stars += "*";
    }

    System.out.print(stars);
}

Ответы [ 3 ]

0 голосов
/ 26 февраля 2020

Если вы хотите напечатать значение игральных костей, вот программа, которая поможет вам

public static void main(String[] args){
    int diceValue = 5;
    String stars = "";
    for(int i=1; i<= diceValue; i++) {
        if(diceValue % 2 != 0) {
            if( i==1 || i%2 == 0 ) {
                stars += "* ";
            }else if(i==diceValue){
                stars += "*";
            }else {
                stars += "\n";
                stars += " *\n";
            }
        }else {
            if( i%2 == 0 ) {
                stars += "* \n";
            }else {
                stars += "* ";
            }
        }
    }
    System.out.println(stars);
}

input: 
DiceValue = 5 

Output:
* * 
 *
* *

input:
DiceValue = 4

Output:
* * 
* * 

Это основано на моем понимании вашего вопроса о том, что вы хотите напечатать ввод в формате игральных костей.

0 голосов
/ 26 февраля 2020

Я пытался сделать ту же проблему без использования какой-либо библиотеки. Я нашел забавный способ сделать это. Этот код имеет ограничения, что он может печатать только до 6 кубиков. Я надеюсь, что мой странный ответ все еще помогает.

 public static void main(String []args){
    int diceValue = 3;
    int[][] diceEquivalentValue = new int[][] {
            {4,5,6}, {}, {2,3,4,5,6}, {6}, {1,3,5},
            {6}, {2,3,4,5,6}, {}, {4,5,6}
    };

    String output = "";
    for( int x = 0; diceEquivalentValue.length > x ; x++ ) {
        output += contains(diceEquivalentValue[x], diceValue) ? "*" : " ";
        output += (x % 3) == 2 ? "\n" : "";
    }

    System.out.print( output );
 }

private static boolean contains( int[] values, int diceValue ) {
    for ( int value : values ) {
        if ( value == diceValue ) {
            return true;
        }
    }
    return false;
}

Вывод:

  *
 * 
*  
0 голосов
/ 26 февраля 2020

Нет необходимости делать это таким образом. Вы можете создать метод, чтобы распечатать его. Например:

static void draw(diceValue) {
    if (diceValue == 1) {
        for (int i = 0; i < diceValue; i++){
            System.out.println("*");
        }
    }
}

Затем в основном методе вы вызываете эту функцию (метод). Кроме того, я не вижу метода main в вашем коде.

public static void main(String[] args) {
    draw(1)
}

Обратите внимание, что 1 является входным параметром или значением кости, которое вы дали.

...