gpt4 book ai didi

Java(生成不重复的数字)

转载 作者:行者123 更新时间:2023-12-01 06:57:13 25 4
gpt4 key购买 nike

我正在制作一个应用程序,下面的代码应该生成 7 个随机数字并将它们打印到屏幕上,并且所有数字都不应该彼此相同。

我已经尝试了各种方法来做到这一点。我花了大约 5 个小时检查它,征求第二意见,他们说它应该有效,但事实并非如此。它有什么作用?它只是将 7 个随机数写入屏幕,但大多数情况下会出现重复,大多数情况下应用程序会停止(错误),但代码中没有错误。这只是我尝试过的多种方法中的一种。如果有什么不对劲的地方,有人可以告诉我吗?或者有什么建议吗?或者给我一些示例代码来替换 while 循环?考虑到我对java很陌生,任何建议都会很好。

更新:while循环是主循环。它调用一个数字方法,生成 7 个随机数并将它们存储在“text_counter”数组中,然后我检查它们是否是数组中的重复数字,如果不是,它会跳出循环并将它们打印到屏幕上,但是如果有,则返回到循环开头以生成更多随机数并再次检查它们。

这是代码

import java.util.HashSet;
import java.util.Random;
import java.util.Set;

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

public class Lotto extends Activity {

/** Called when the activity is first created. */
Random dice = new Random();
TextView top, med, and, qcounter, wcounter, ecounter, rcounter, tcounter,
ycounter, ucounter;
@SuppressWarnings("rawtypes")
Set uniqueItems = new HashSet();
Button gen;
EditText input1, input2;
int[] text_counter = { 1, 2, 3, 4, 5, 6, 7 };
boolean o = false;
boolean oo = false;
boolean ooo = false;
int text1;
int pre_text2;
int count = 0;
int text2;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lotto_xml);
gen = (Button) findViewById(R.id.b_gen);
// ////////////////////////////////////// text view var
qcounter = (TextView) findViewById(R.id.q_lotto);
wcounter = (TextView) findViewById(R.id.w_lotto);
ecounter = (TextView) findViewById(R.id.e_lotto);
rcounter = (TextView) findViewById(R.id.r_lotto);
tcounter = (TextView) findViewById(R.id.t_lotto);
ycounter = (TextView) findViewById(R.id.y_lotto);
ucounter = (TextView) findViewById(R.id.u_lotto);
// ////////////////////////////////////////////////////
final EditText input1 = (EditText) findViewById(R.id.et_min);
final EditText input2 = (EditText) findViewById(R.id.et_max);

gen.setOnClickListener(new View.OnClickListener() {

@SuppressWarnings({ "unchecked" })
@Override
public void onClick(View v) {
// TODO Auto-generated method stub

o = false;
oo = false;
count = 0;

while (o == false) {
number();
count = 0;
for (int i = 0; i < text_counter.length; i++) {
if (!uniqueItems.add(text_counter[i])) {
count = count + 1;
}

}

if (count == 0) {
o = true;
}

}

qcounter.setText(String.valueOf(text_counter[0]) + ",");
wcounter.setText(String.valueOf(text_counter[1]) + ",");
ecounter.setText(String.valueOf(text_counter[2]) + ",");
rcounter.setText(String.valueOf(text_counter[3]) + ",");
tcounter.setText(String.valueOf(text_counter[4]) + ",");
ycounter.setText(String.valueOf(text_counter[5]) + ",");
ucounter.setText(String.valueOf(text_counter[6]));

}


private void number() {
// TODO Auto-generated method stub
text1 = Integer.parseInt(input1.getText().toString());
text2 = Integer.parseInt(input2.getText().toString());
text2 = text2 - text1;
text2 = text2 + 1;
for (int i = 0; i < 7; i++) {
text_counter[i] = text1 + dice.nextInt(text2);
}
}

});

}
}

最佳答案

您永远不会清除名为 uniqueItems 的 HashSet。您应该在每次循环之前清除它,否则您将永远在其中累积数字。

关于Java(生成不重复的数字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8771039/

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