Итак, проблема в следующем Мне удалось сделать небольшую программу, в которой появлялись случайные изображения и 3 вопроса с несколькими вариантами ответов в группе Radio. изображение выбирается случайным образом из пула из 6 изображений, а 3 ответа берутся из массива строк, содержащего все имена изображений. теперь первый переключатель - это тот, который всегда имеет правильный ответ, потому что он имеет то же значение, что и int, который устанавливает изображение, в то время как два других являются случайными из набора строковых значений, которые я указал.
Две проблемы
Один
Иногда я получаю один и тот же ответ в двух или трех переключателях, что является проблемой. Поэтому я хочу, чтобы ответ нельзя было повторить.
Два
тот факт, что первый ответ всегда является правильным, является проблематичным, поэтому как я могу рандомизировать его положение и сделать так, чтобы кнопка проверки всегда могла узнать правильный ответ.
// под ним весь java-код
package com.example.hamdanali.imageview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import java.util.LinkedHashSet;
public class imagegame extends AppCompatActivity {
ImageView pic ;
Button btn1;
Button btn2;
Button btn3;
Button check;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_imagegame);
pic = findViewById(R.id.Pic) ;
btn1= findViewById(R.id.Btn1);
btn2= findViewById(R.id.Btn2);
btn3= findViewById(R.id.Btn3);
check= findViewById(R.id.Check);
final int array[] = {
R.drawable.one ,
R.drawable.two ,
R.drawable.three,
R.drawable.four ,
R.drawable.five ,
R.drawable.six , };
final String picname[] = {
"One" ,
"Two" ,
"Three",
"Four" ,
"Five" ,
"Six" };
check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//to randomly select the buttons and the images
int i=(int)(Math.floor(array.length*Math.random()));
int j=(int)(Math.floor(array.length*Math.random()));
int k=(int)(Math.floor(array.length*Math.random()));
pic.setImageResource(array[i]);
btn1.setText(picname[i]);
btn2.setText(picname[j]);
btn3.setText(picname[k]);
}
});
}
}
//// ниже приведен снимок экрана с графическим интерфейсом
я устал от этого, но я продолжаю получать эти ошибки
check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<int> randomNums = new ArrayList<>();
//type argument can not be of primitive type
for (int i=0; i<3; i++) {
int randomNum = (int)(Math.floor(array.length*Math.random()));
while (randomNums.contains(randomNum))
//Cannot resolve method "contains(int)"
randomNum = (int)(Math.floor(array.length*Math.random()));
randomNums.add(randomNum);
//Cannot resolve method "add(int)"
}
pic.setImageResource(randomNums.get(0));
Collections.shuffle(randomNums);
//shuffle(java.util.List<?>)in Collections cannot be applied to (List<int>)
//
btn1.setText(randomNums.get(0));
btn2.setText(randomNums.get(1));
btn3.setText(randomNums.get(2));
//Cannot resolve method "get(int)"




Вы всегда устанавливаете array [i] в качестве своего первого ответа ... И ваша случайная функция может возвращать один и тот же результат два или три раза. Я бы хотел примерно так:
package com.example.hamdanali.imageview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedHashSet;
public class imagegame extends AppCompatActivity {
ImageView pic ;
Button btn1;
Button btn2;
Button btn3;
Button check;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_imagegame);
pic = findViewById(R.id.Pic) ;
btn1= findViewById(R.id.Btn1);
btn2= findViewById(R.id.Btn2);
btn3= findViewById(R.id.Btn3);
check= findViewById(R.id.Check);
final int array[] = {
R.drawable.one ,
R.drawable.two ,
R.drawable.three,
R.drawable.four ,
R.drawable.five ,
R.drawable.six , };
final String picname[] = {
"One" ,
"Two" ,
"Three",
"Four" ,
"Five" ,
"Six" };
check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//to randomly select the buttons and the images
//this should fix your repeated answers
List<Integer> randomNums = new ArrayList();
for (int i=0; i<3; i++) {
int randomNum = (int)(Math.floor(array.length*Math.random()));
while (randomNums.contains(randomNum))
randomNum = (int)(Math.floor(array.length*Math.random()));
randomNums.add(randomNum);
}
pic.setImageResource(randomNums.get(0));
Collections.shuffle(randomNums);
btn1.setText(randomNums.get(0));
btn2.setText(randomNums.get(1));
btn3.setText(randomNums.get(2));
}
});
}
}
ох, я забыл импортировать arraylist. вы его импортировали? и измените List <int> на List <Integer> ... Моя проблема. Попробуй сейчас я отредактировал пост.
Я попытался добавить комментарий и случайно заменил то, что вы написали, своим редактированием, извините, я все еще новичок :)