Поиск по текстовому файлу и случайный выбор?

#java #text #random

#java #текст #Случайный

Вопрос:

моя домашняя работа заключается в следующем, если требуется больше контекста — я бы объяснил это, но объяснять это довольно долго, и текстовые файлы предоставляются на сайте, если людям нужно их просмотреть:http://www.cis.upenn.edu /~cis110/hw/hw06/index.html

Прямо сейчас я нахожусь на шаге 2 и застрял на случайном выборе из трех элементов, связанных с классом treasure, проверяя, начинаются ли они с «tc». Я могу извлечь класс treasure из monster.txt файл, и у меня есть монстр. Это мой метод поиска класса treasure:

 public static void getTreasureClass(Monster monGet)
    throws FileNotFoundException{
    Random rand = new Random();
    String tc=monGet.getTreasureClass();
    Scanner file=new Scanner(new File ("TreasureClassEx.txt"));
    System.out.println(tc);
    while(!file.next().equals(tc)){
        file.next();
        }
    tc=file.next();
    if (tc.startsWith("tc:")){

    }
    else {
        System.out.println("test");
        }   
    }
  

Это крайне неполно, но я был бы признателен за несколько советов о том, куда идти дальше с точки зрения случайного выбора из трех элементов, или если мой код плохой. Заранее спасибо!

Ответ №1:

Итак, у ‘Hell_Bovine’ есть класс сокровищ «tc: Cow_ (H)».

Итак, вы ищете эту строку в TreasureClassEx.txt

 tc:Cow_(H)  tc:Act_5_(H)_Equip_B    tc:armo3    tc:armo3
  

Затем вы выберете один из трех вариантов случайным образом.

И вы будете продолжать читать TreasureClassEx, находить правильную строку и делать случайный выбор до тех пор, пока «класс сокровищ», который вы ищете, начинается с «tc:».

Например, для «tc: Cow_ (H)» вы могли бы выбрать «tc: armo3». Для «tc: armo3» вы можете выбрать «Quilted_Armor». И тогда вы бы остановились на этом.

По крайней мере, так я читаю инструкции. ;->

Ответ №2:

Убедитесь, что вы импортируете то, что я добавляю, поскольку вы не показываете импорт, я не буду их добавлять

 public static void getTreasureClass(Monster monGet)
    throws FileNotFoundException{
    Random rand = new Random();
    String tc=monGet.getTreasureClass();
    Scanner file=new Scanner(new File ("TreasureClassEx.txt"));
    System.out.println(tc);
    List<String> list = new LinkedList<String>();
    while(!file.next().equals(tc)){
        file.next();
        }
    tc=file.next();
    if (tc.startsWith("tc:")){
    list.add(tc);
    }

    String treasure = list.get(rand.nextInt(list.size()));
    else {
        System.out.println("test");
        }   
    }
  

Итак, в этом я сохранил пример в строковом значении ‘treasure’

Я не чувствую себя хорошо, помогая вам с домашней работой -_-

Комментарии:

1. Спасибо, мы еще не рассмотрели связанные списки в классе, но я ценю помощь. Также меня смущает, куда вы помещаете строку treasure =list.get… . Поскольку он находится между if и else, выполняется ли он, если tc начинается с tc или выполняется иначе? Или это не зависит от цикла if / else? Спасибо!

2. Это не зависит от оператора if / else, спасибо, что поняли это.

3. Глядя на инструкции, я не думаю, что выбор случайной СТРОКИ правильный. Похоже, что случайность находится внутри строк.