MVN Magi c Номер на переключателе - PullRequest
2 голосов
/ 14 апреля 2020

Я какое-то время имел дело с Checkstyle и знаю, что такое волхвы c Числа, однако я никогда не сталкивался с таким способом, это просто переключатель для назначения данных, но случаи помечены как волхвы c числа, и я не могу сделать эти окончательные или что-то подобное (что я знаю). Программа, которую я создал, получает случайное число (int от 0 до 199) и использует его в переключателе, не только это, но 200 в ra.nextInt (200); также "magi c".

Мои вопросы: как я могу предотвратить регистрацию числами волхвов c без объявления 200 новых переменных?

Это мой код:

public Basura selectB(final Basura b) {

        private Random ra = new Random();

        ran = ra.nextInt(200);

        switch (ran) {
            case 0: b.setName("Funko Roto");
                b.setClasification("PL"); break;
            case 1: b.setName("Bateria de Laptop");
                b.setClasification("B"); break;
            case 2: b.setName("Sobras de Comida");
                b.setClasification("O"); break;
            case 3: b.setName("Clips de Oficina");
                b.setClasification("M"); break;
            case 4: b.setName("Colcha Deshilachada");
                b.setClasification("T"); break;
            case 5: b.setName("Disco DVD");
                b.setClasification("B"); break;

             ...

            default:b.setName("ERROR");
                b.setClasification("E"); break;
        }

        return b;
    }

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Вы можете вывести этот список вещей в текстовый файл и заставить программу считывать содержимое файла в массив. Вы можете поместить его в жестко запрограммированном месте в коде, или настроить местоположение, или вы можете поместить его в classpath (src / main / resources, если вы используете соглашения maven) и читать его с помощью Class.getResourceAsStream.

Сохраните классификацию в той же строке, что и имя, разделенные разделителем, например:

Sobras de Comida|O
Colcha Deshilachada|T

et c. Длина массива - это значение, которое передается в nextInt.

Содержимое файла загружается в массив. Избавьтесь от переключателя и используйте случайное значение для индексации массива, чтобы получить вашу строку. Затем вы можете разбить строку и установить поля в pojo, которое вы возвращаете.

При таком подходе:

  • Нет номеров волхвов c.

  • Список проще обновлять.

  • Вы можете удалить несколько повторяющихся кодов низкого значения.

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

Я попробовал ответ sugested, и он сработал, вот код, который у меня закончился

public class DBAnalisis {


        private Random ra = new Random();

        private int ran = 0;

        private final int doscientos = 200;


    public Basura selectB(final Basura b) throws IOException {

        ran = ra.nextInt(doscientos);


        String linea;


        String[] basu = new String[2];


        BufferedReader dataBse = null;


        ArrayList<String> list = new ArrayList<String>();


        URL direcc = getClass().getResource("DB.txt");
        FileReader dB =
                new FileReader(direcc.getPath());

                try {

                    dataBse = new BufferedReader(dB);
                    // Lectura del fichero
                    while ((linea = dataBse.readLine()) != null) {
                        list.add(linea);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

                dB.close();

                String[] myArray = new String[list.size()];
                list.toArray(myArray);


                //basu = myArray[ran].split("|", 1); no funciona

                 int index = myArray[ran].indexOf("|");
                 basu[0] = myArray[ran].substring(0, index);
                 basu[1] = myArray[ran].substring(index + 1);
                 basu[0].trim();
                 basu[1].trim();

                 b.setName(basu[0]);
                 b.setClasification(basu[1]);

                return b;


    }
}

DB.txt - это файл, который объединяет каждую строку в переключателе. | CLASS

...