gpt4 book ai didi

java - 如何根据 Android/Java 中的特定开始/结束编号正确生成随机整数?

转载 作者:行者123 更新时间:2023-12-02 09:49:16 24 4
gpt4 key购买 nike

我正在尝试创建一个 Android 应用程序,它接受用户输入的“从”数字和“到”数字(范围),然后从该范围内生成一个随机整数。我使用 2 个带有 number inputType 的 EditText,以便用户可以输入其唯一值,然后我尝试使用相应的 Java 文件中的 EditText(两者)文件附在下面)。

我看了hereherehere

但是,Android Studio 可以构建(编译)我的应用程序,但是当我在模拟器中运行该应用程序(在添加此逻辑之前该应用程序一直在工作)时,它甚至拒绝加载 Activity,而是显示“不幸的是,[应用程序]已停止。”我认为这与将“addTextChangedListener”代码的某些部分留空有关,但我不知道到底要放在那里(我从上面链接的示例中获取它)。

我到底做错了什么,如何修复我所做的事情以使代码正常运行?或者也许有一种我还没有发现的更简单的方法......

谢谢!

这是我的 XML Activity 代码:

    <EditText
android:id="@+id/editText_from"
android:ems="10"
android:gravity="center"
android:hint="@string/string_from"
android:importantForAutofill="no"
android:inputType="number" />

<EditText
android:id="@+id/editText_to"
android:ems="10"
android:gravity="center"
android:hint="@string/string_to"
android:importantForAutofill="no"
android:inputType="number" />

这是我的 Java 代码:

package com.example.appname;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;

public class NumberActivity extends AppCompatActivity {
private EditText editTextFrom;
private EditText editTextTo;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_number);
editTextFrom = (EditText) findViewById(R.id.editText_from);
editTextTo = (EditText) findViewById(R.id.editText_to);
editTextFrom.setText(editTextFrom.getEditableText());
editTextTo.setText(editTextTo.getEditableText());
final int fromValue = 0;
editTextFrom.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// What do I put here?
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// What do I put here?
}

@Override
public void afterTextChanged(Editable s) {
editTextFrom.setText(fromValue);
}
});
final int toValue = 0;
editTextTo.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// What do I put here?
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// What do I put here?
}

@Override
public void afterTextChanged(Editable s) {
editTextFrom.setText(toValue);
}
});
int randomNum = ThreadLocalRandom.current().nextInt(fromValue, toValue);
return;
}
}

最佳答案

因此,您需要生成一定范围内的随机数。您有一个按钮,单击该按钮时,您需要生成随机数。那么这意味着什么呢?这意味着您不需要添加 editText.addTextChangedListener 来持续监听文本更改。

第 1 步:创建一个名为generateRandomNumber 的方法。

private int generateRandomNumberBetweenRange(int from, int to){
return ThreadLocalRandom.current().nextInt(fromValue, toValue);
}

第 2 步:将 onClickListener 设置为 XML 中的按钮,并在该按钮的 onClick 中,从 EditText 获取值,并将这些值传递给第 1 步中创建的函数。

button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int fromValue = Integer.parseInt(fromValueEditText.getText().toString());
int toValue = Integer.parseInt(toValueEditText.getText().toString());
int randomNumber = generateRandomNumberBetweenRange(fromValue, toValue);
//Your random Number is generated, you can now do whatever you want with it.
}
});

关于java - 如何根据 Android/Java 中的特定开始/结束编号正确生成随机整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56432987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com