Как получить случайные слова для Array List? - PullRequest
0 голосов
/ 03 декабря 2011

Я работаю над проектом палача.На данный момент у меня есть список слов в файле TXT.У меня есть RandomString класс, который мне нужно использовать.Я работаю по методу Next и застрял.Вот что у меня есть:

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class RandomString {
    private String filename;
    private ArrayList<String> phrases;

    public RandomString(String filename) {
        this.filename = filename;
        reset();
    }

    public void reset() {
        phrases = new ArrayList<String>();

        try {
            Scanner scan = new Scanner(new File(filename));
            while (scan.hasNext()) 
                phrases.add(scan.nextLine());
            scan.close();
        }
        catch (Exception e){}
    }

    public String next() {
        if (phrases.isEmpty())
            reset();
    }
} 

Мой следующий метод должен: посмотреть, пуст ли ArrayList и сброшен ли он, затем получить случайное число от 0 до размера вашего списка, затем получить элемент, затем удалите элемент, а затем верните элемент.

Ответы [ 2 ]

1 голос
/ 03 декабря 2011

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

Другое дело - сделать / опубликовать что-то завершенное, например.блоки, как если бы |операторы else с закрывающими и открывающими скобками.

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

Здесь ответ на ваш вопрос. Пожалуйста, следуйте некоторым общим стандартам, используемым здесь, чтобы сделать ваш код более понятным (независимо от того, где вы пишете в компании, всообщение, в блоге и т. д.).

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class RandomString {
    private String filename;
    private ArrayList<String> phrases;
    // Random number generator instance
    Random randomGenerator = new Random();

    public RandomString(String filename)

    {
        this.filename = filename;
        reset();
    }

    public void reset() {
        phrases = new ArrayList<String>();

        try {
            Scanner scan = new Scanner(new File(filename));
            while (scan.hasNext())
                phrases.add(scan.nextLine());
            scan.close();
        } catch (Exception e) {
        }
    }

    public String next() {

        // Value retrieved from array-list
        String item = null;
        // Index to be read from array-list
        int index = 0;

        // Reset the array-list if is it empty
        if (phrases.isEmpty()) {
            reset();
        }

        // Check the size, there is a possibility to have zero elements in your stored file
        if (phrases.size() > 0) {

            if (phrases.size() > 1) {
                // Get a random number
                index = randomGenerator.nextInt(phrases.size());
            } else {
                // If the array-list has only one item there is no need to get a random number.
                index = 0;
            }
            // Get the indexed item
            item = phrases.get(index);
            // Remove item
            phrases.remove(index);

        }

        // Return the item
        return item;
    }
}

Так что сделайте все возможное.

1 голос
/ 03 декабря 2011

Получение случайного числа: Math.Random приведение к int и умножение на количество элементов в вашем списке и 10.

Например.

  • 6 товаров в вашем списке, int abc=(int) (Math.random()*60);
  • 4 шт., int abc=(int) (Math.random()*40);

но я не понимаю остальную часть вашего вопроса

или вы можете использовать java.util.random

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...