Как бы я go об изменении целых чисел в методе на строки? - PullRequest
0 голосов
/ 23 апреля 2020

Я сейчас работаю над игрой в кости под названием "LCR" для java. Я не знаю, как бы я go изменил целые числа в методе roll () на Strings. Я знаю, что программа не будет работать так, как это происходит из-за ошибки int to String, но мы должны вернуть либо "D", "L", "C", либо "R" в зависимости от того, что d ie rolls.

Я сделал метод roll () как String, что усложнило другие классы.

Я пробовал несколько методов преобразования целых чисел в строки, таких как метод toString, метод Integer.valueOf () и многие другие. Я не знаю, должен ли я сделать отдельный метод для этого преобразования, или я должен оставить метод roll () как String.

Любая помощь очень ценится.

import java.util.Random;

// Create class
public class Die_2
{
    private int faceDie = 1;

    // Create method: roll()
    // RETURN D, R, L, or C depending on roll results...
    public int roll ()
    {
        // Use random 
        Random randInt = new Random();
        int faceDie = randInt.nextInt(6) + 1;

        if (faceDie < 4.0/ 8.0) 
            faceDie = 4;
        else if (faceDie < 5.0/ 8.0)
            faceDie = 5;
        else if (faceDie < 6.0/ 8.0)
            faceDie = 6;    

        // Return D, L, C, R...
        if (faceDie == 1 || faceDie == 2 || faceDie == 3)
        {       
            return "D";
        }
        else if (faceDie == 4)
        {   
            return "L";
        }
        else if (faceDie == 5)
        {   
            return "C";
        }
        else 
        {   
            return "R";
        }   
    }

1 Ответ

0 голосов
/ 23 апреля 2020

Ну, первое, что нужно сделать , это пометить метод так, чтобы он возвращал строку.

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

Наконец, вы лучше не создавайте объект randInt в конструкторе где-либо, а не создавайте новый экземпляр каждый раз, когда вы вызываете функцию.

Кроме этих трех вещей, все, что у вас должно быть хорошо, с небольшой очисткой кода а также:

import java.util.Random;

public class HelloWorld {
    Random randInt;

    public HelloWorld() {
        randInt = new Random();
    }

    public String roll ()
    {
        int faceDie = randInt.nextInt(6) + 1;

        if (faceDie <= 3) return "D";
        if (faceDie == 4) return "L";
        if (faceDie == 5) return "C";
        return "R";
    }

    public static void main(String []args) {
        HelloWorld hw = new HelloWorld();
        System.out.println(hw.roll());
    }
}

Конечно, вы можете упростить его значительно , просто используя значения 0 thru 5 и индексировав в строку значений, которые вы хотеть. Я бы не использовал это, если бы был лот вариантов выбора, но с шестью должно быть все в порядке, и тогда код roll() становится (со всем остальным, оставаясь прежним):

public String roll() {
    int index = randInt.nextInt(6);
    return "DDDLCR".substring(index, index + 1);
}
...