Android:字符串数组
Posted
技术标签:
【中文标题】Android:字符串数组【英文标题】:Android: String array 【发布时间】:2021-10-30 11:01:07 【问题描述】:我有一个关于不同字母表的游戏活动是随机可用的,用户会选择其中一些正在制作正确单词的字母。 我制作了单词的字符串数组,即答案 但我想知道如何显示这个答案单词字母并随机添加一些其他字母作为混淆? 就像以 [World] 为例,将它的字母划分为 [W, L, D, O] 并让它们随机显示并让玩家从中选择?
TextView guessItTimer;
CountDownTimer timer;
Random r;
String currentWord;
private int presCounter = 0;
private int maxPresCounter = 4;
private String[] keys = "R", "I", "B", "D", "X";
String dictionary[] =
"remember",
"hungry",
"crying",
"sour",
"sleep",
"awesome",
"Seven",
"color",
"began",
"appear",
"weight",
"language"
;
TextView textScreen, textQuestion, textTitle;
Animation smallbigforth;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guess_it);
guessItTimer = findViewById(R.id.guessItTimer);
smallbigforth = AnimationUtils.loadAnimation(this, R.anim.smallbigforth);
keys = shuffleArray(keys);
for (String key : keys)
addView(( findViewById(R.id.layoutParent)), key, findViewById(R.id.et_guess));
maxPresCounter = 4;
resetTimer();
//CountdownTimer
void resetTimer()
timer = new CountDownTimer(30150, 1000)
@Override
public void onTick(long l)
guessItTimer.setText(String.valueOf(l / 1000));
@Override
public void onFinish()
Toast.makeText(GuessItActivity.this, "Time is over", Toast.LENGTH_SHORT).show();
startActivity(new Intent(GuessItActivity.this, BossFinalActivity.class));
finish();
.start();
private String[] shuffleArray(String[] ar)
Random rnd = new Random();
for (int i = ar.length - 1; i > 0; i--)
int index = rnd.nextInt(i + 1);
String a = ar[index];
ar[index] = ar[i];
ar[i] = a;
return ar;
private void addView(LinearLayout viewParent, final String text, final EditText editText)
LinearLayout.LayoutParams linearLayoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
linearLayoutParams.rightMargin = 30;
final TextView textView = new TextView(this);
textView.setLayoutParams(linearLayoutParams);
textView.setBackground(this.getResources().getDrawable(R.drawable.bgpink));
textView.setTextColor(this.getResources().getColor(R.color.colorPurple));
textView.setGravity(Gravity.CENTER);
textView.setText(text);
textView.setClickable(true);
textView.setFocusable(true);
textView.setTextSize(32);
textQuestion = findViewById(R.id.textQuestionBoss);
textScreen = findViewById(R.id.gametitle);
textTitle = findViewById(R.id.Ammo);
textView.setOnClickListener(new View.OnClickListener()
@SuppressLint("SetTextI18n")
@Override
public void onClick(View v)
if(presCounter < maxPresCounter)
if (presCounter == 0)
editText.setText("");
editText.setText(editText.getText().toString() + text);
textView.startAnimation(smallbigforth);
textView.animate().alpha(0).setDuration(300);
presCounter++;
if (presCounter == maxPresCounter)
doValidate();
);
viewParent.addView(textView);
private void doValidate()
presCounter = 0;
EditText editText = findViewById(R.id.et_guess);
LinearLayout linearLayout = findViewById(R.id.layoutParent);
currentWord = dictionary[r.nextInt(dictionary.length)];
if(editText.getText().toString().equals(currentWord))
//Toast.makeText(GuessItActivity.this, "Correct", Toast.LENGTH_SHORT).show();
Intent a = new Intent(GuessItActivity.this,BossFinalActivity.class);
startActivity(a);
editText.setText("");
else
Toast.makeText(GuessItActivity.this, "Wrong", Toast.LENGTH_SHORT).show();
editText.setText("");
keys = shuffleArray(keys);
linearLayout.removeAllViews();
for (String key : keys)
addView(linearLayout, key, editText);
public void onBackPressed()
timer.cancel();
this.finish();
super.onBackPressed();
【问题讨论】:
【参考方案1】:你可以这样实现
String a2z = "abcdefghijklmnopqrstuvwxyz";
String answer = "World";
// lets assume you need 16 char to select from
ArrayList<Character> chars = new ArrayList<Character>();
for (int i = 0; i < answer.length(); i++)
chars.add(answer.charAt(i));
int dif = 16 - chars.size();
Random rand = new Random();
for (int i = 0; i < dif; i++)
int ranIndex = rand.nextInt(a2z.length());
chars.add(a2z.charAt(ranIndex));
Collections.sort(chars);
System.out.println("nameArray2" + chars.toString());
【讨论】:
以上是关于Android:字符串数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在android中将json对象从json数组转换为字符串数组