2015-08-03 4 views
-5
public class Elements { 
    public static String element_answer = ""; 
    public String[] elements = new String[118]; 
    elements[0] = "Hydrogen"; 
    elements[1] = "Helium"; 
    elements[2] = "Lithium"; 
    elements[3] = "Beryllium"; 
    elements[4] = "Boron"; 
    (...) 
    elements[117] = "Ununoctium"; 
} 

Я хотел бы, чтобы случайно выбрать элемент из массива и присвоить случайный выбор переменной element_answer. Как это можно сделать?Случайный выбор элемента из массива строк

+0

Звучит хорошо, но вы не задали вопрос. В какой именно части вы застряли? Вы искали, как получить случайное число в Java? – codeMagic

+0

@codeMagic Я добавил вопрос – user299824

+0

Это невозможно компилировать? –

ответ

-1

Вы могли бы использовать:

import java.util.Collections; 
[...] 
Collection.shuffle(elements); 
element_answer = elements[0]; 

Это будет делать трюк. Вы перетасовываете весь список и берете первый, который теперь является элементом из этого списка. Рандомизировано коллекциями Java.

1

Попробуйте это:

element_answer = elements[new Random().nextInt(elements.length)]; 
+0

Затем я использую p1_button1.setText (elementanswer); чтобы назначить его на текст кнопки, но ничего не появляется на кнопке. НИЧЕГО – user299824

+1

Я бы сказал, что создание «нового Random()» каждый раз, когда вы хотите получить новый случайный элемент, будет дорогостоящим в долгосрочной перспективе. Я предпочитаю ответ @chayasan больше, где 'random' может храниться как поле экземпляра, если нужно, чтобы избежать перестройки. – NoseKnowsAll

+0

@ user299824 Посмотрите внимательно. Вы создали массив с 113 нулевыми ссылками. Ваши шансы на выбор одного из этих 113 нулей вместо одного из 5 довольно высоки. Я предлагаю вам создать свой массив немного по-другому. – dsh

1

Вы можете сделать что-то вроде этого,

Random random = new Random(); 
element_answer = elements[random.nextInt(elements.length)]; 
-1

Я думаю, ваше намерение с моей ESP (шутка), что класс, который возвращает строку, которая случайно выбранное из массива строк (которые являются названиями химических элементов). Если это так, ниже - возможное внедрение.

Elements.java:

// The Class name of Java starts with upper case as normal 
public class Elements { 
    // There is no need of this field value. 
    // public static String element_answer = ""; 

    public String[] elements = new String[118]; 

    // You need a random object 
    private Random random = new Random(); 

    // Inside Constructor you can instantiate Strings in the Array 
    public Elements() { 
     // Array number starts from '0'. 
     // This is quite basic knowledge. 
     elements[0] = "Hydrogen"; 
     elements[1] = "Helium"; 
     elements[2] = "Lithium"; 
     elements[3] = "Beryllium"; 
     elements[4] = "Boron"; 
     (...) 
     elements[117] = "Ununoctium"; 
     // So array number starts from '0' 
     // that the last number is [array length] - 1 
    } 

    // You need to define a method. 
    // This is basic idea for Java Programmers! 
    public String getElementRandom() { 
     return elements[random.nextInt(elements.length)]; 
    } 
} 

Использование внутри вашего Activity (или где-то) есть:

// Declare at field 
Elements elements = new Elements(); 

(...) 

// somewhere you want to use 
p1_button1.setText(elements.getElementRandom()); 
Смежные вопросы