You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Java随机选择代码重构为Android版本遇问题,需实现EditText读内容存ArrayList

Android版本随机选择工具实现方案

嘿,我来帮你搞定这个Android版本的随机选择工具!先提一句你贴的原Java代码有个小细节问题——new ArrayList<String>后面少了括号,正确写法是new ArrayList<String>(),不过咱们直接聚焦Android版本的实现哈。

第一步:编写布局文件(res/layout/activity_main.xml)

我们需要一个输入框让用户输入选项,一个按钮负责添加选项,一个文本框展示已添加的所有选项,还有触发随机选择的按钮,以及显示最终结果的文本框:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <!-- 输入选项的EditText -->
    <EditText
        android:id="@+id/et_option"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入要添加的选项" />

    <!-- 添加选项按钮 -->
    <Button
        android:id="@+id/btn_add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="添加选项"
        android:layout_marginTop="8dp" />

    <!-- 显示已添加的选项 -->
    <TextView
        android:id="@+id/tv_options"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="已添加的选项:"
        android:textSize="16sp" />

    <!-- 随机选择按钮 -->
    <Button
        android:id="@+id/btn_pick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="随机选择"
        android:layout_marginTop="16dp" />

    <!-- 显示选择结果 -->
    <TextView
        android:id="@+id/tv_result"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:textSize="20sp"
        android:textStyle="bold" />

</LinearLayout>

第二步:编写Activity逻辑(MainActivity.java)

这里实现从EditText读取内容、添加到ArrayList,以及随机选择的核心功能,同时处理输入为空、列表为空等边界情况:

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class MainActivity extends AppCompatActivity {

    private EditText etOption;
    private TextView tvOptions;
    private TextView tvResult;
    private List<String> optionList = new ArrayList<>();
    private Random randomGenerator = new Random();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 初始化所有控件
        etOption = findViewById(R.id.et_option);
        tvOptions = findViewById(R.id.tv_options);
        tvResult = findViewById(R.id.tv_result);
        Button btnAdd = findViewById(R.id.btn_add);
        Button btnPick = findViewById(R.id.btn_pick);

        // 添加选项按钮的点击事件
        btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String option = etOption.getText().toString().trim();
                if (!option.isEmpty()) {
                    optionList.add(option);
                    // 更新已添加选项的显示内容
                    updateOptionsDisplay();
                    // 清空输入框,方便用户继续输入
                    etOption.setText("");
                } else {
                    Toast.makeText(MainActivity.this, "请输入有效的选项哦", Toast.LENGTH_SHORT).show();
                }
            }
        });

        // 随机选择按钮的点击事件
        btnPick.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!optionList.isEmpty()) {
                    int randomIndex = randomGenerator.nextInt(optionList.size());
                    String selectedOption = optionList.get(randomIndex);
                    tvResult.setText("随机选中:" + selectedOption);
                } else {
                    Toast.makeText(MainActivity.this, "还没有添加任何选项呢", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    // 辅助方法:更新已添加选项的展示文本
    private void updateOptionsDisplay() {
        StringBuilder sb = new StringBuilder("已添加的选项:\n");
        for (int i = 0; i < optionList.size(); i++) {
            sb.append(i + 1).append(". ").append(optionList.get(i)).append("\n");
        }
        tvOptions.setText(sb.toString());
    }
}

关键细节说明

  • 输入校验:添加选项时先trim掉前后空格,避免空字符串或纯空格的无效选项被加入,同时用Toast给用户明确提示。
  • 异常预防:随机选择前先判断列表是否为空,防止出现IndexOutOfBoundsException,同样用Toast提示用户补充选项。
  • 显示优化:用StringBuilder拼接选项列表,让用户能清晰看到所有已添加的内容。
  • 代码适配:Android里用非静态的成员变量存储选项列表更合适,因为Activity是实例化使用的,不像控制台程序依赖静态变量。

把这些代码放到你的Android项目里,就能直接运行测试啦~

内容的提问来源于stack exchange,提问作者Serkan Tarakcı

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:45:55