Java While循环涉及Java编程中为绝对初学者提出的挑战
我正在尝试自己学习Java编程(没有课程/老师/导师等),所以这不是家庭作业 我的问题已经在中提到,但是,我在这本书中还没有深入到足以涵盖ArrayList的程度,正如前面提出这个问题的程序员所说的那样 回答这个问题肯定会帮助大多数初学者更好地理解如何为while循环编写语句,这通常是一个复杂的过程,特别是对于初学者来说 问题是:编写一个while循环,生成1到100之间的随机数,并在生成相同的数两次后停止循环 正如您所认识到的,每次运行该程序时,只会创建1到100之间的两个随机数的输出。我相信这一错误是由于第17行引起的:equal=numberCheck==values[I];不正确,因为这是定义while循环条件何时变为true并因此停止计算的语句 非常感谢您的帮助。多谢各位 我的代码是:Java While循环涉及Java编程中为绝对初学者提出的挑战,java,while-loop,Java,While Loop,我正在尝试自己学习Java编程(没有课程/老师/导师等),所以这不是家庭作业 我的问题已经在中提到,但是,我在这本书中还没有深入到足以涵盖ArrayList的程度,正如前面提出这个问题的程序员所说的那样 回答这个问题肯定会帮助大多数初学者更好地理解如何为while循环编写语句,这通常是一个复杂的过程,特别是对于初学者来说 问题是:编写一个while循环,生成1到100之间的随机数,并在生成相同的数两次后停止循环 正如您所认识到的,每次运行该程序时,只会创建1到100之间的两个随机数的输出。我相信
import java.util.Random;
public class SameNumber {
public static void main(String args[]) {
Random rand = new Random();
int[] values = new int[100];
int counter = 0;
boolean equal = false;
for (int i = 0; i < 2; i++) {
values[i] = rand.nextInt(100) + 1;
System.out.println(values[i]);
int numberCheck;
}
while (!equal) {
for(int i = counter - 1; i >= 0; i--) {
int numberCheck = values[i];
equal = numberCheck == values[i];
//}
if (!equal) {
System.out.println(rand.nextInt(100) + 1);
}
for (int j = counter - 1; j >= 0; j--) {
if (numberCheck == values[j]) {
break;
}
}
}
}
}
}
import java.util.Random;
公共类样本{
公共静态void main(字符串参数[]){
Random rand=新的Random();
int[]值=新的int[100];
int计数器=0;
布尔相等=假;
对于(int i=0;i<2;i++){
值[i]=兰特·耐克斯汀(100)+1;
System.out.println(值[i]);
int numberCheck;
}
而(!相等){
对于(int i=计数器-1;i>=0;i--){
int numberCheck=值[i];
equal=numberCheck==values[i];
//}
如果(!相等){
系统输出打印LN(兰特nextInt(100)+1);
}
对于(int j=计数器-1;j>=0;j--){
if(numberCheck==值[j]){
打破
}
}
}
}
}
}
旁白:我知道这听起来可能很可笑,但我已经研究这个问题一周了,并试图收集更多的研究,但我仍然无法找到合适的解决方案。我一直不愿寻求帮助,因为我担心其他程序员会用我还没有学会的方法来回答 试试这个:
1.创建一个介于0到100之间的随机数
2.如果不在列表中,则将其添加到列表中。
3.如果新生成的编号已在arraylist停止内
import java.util.ArrayList;
import java.util.Random;
public class SameNumber {
public static void main(String args[]) {
Random rand = new Random();
ArrayList<Integer> list=new ArrayList<Integer>();
int newRand=rand.nextInt(100);
while(!list.contains(newRand)){
list.add(newRand);
newRand=rand.nextInt(100);
}
System.out.print(list);
}
}
import java.util.ArrayList;
导入java.util.Random;
公共类样本{
公共静态void main(字符串参数[]){
Random rand=新的Random();
ArrayList=新建ArrayList();
int newRand=rand.nextInt(100);
而(!list.contains(newRand)){
列表。添加(纽兰);
newRand=rand.nextInt(100);
}
系统输出打印(列表);
}
}
试试这个:
1.创建一个介于0到100之间的随机数
2.如果不在列表中,则将其添加到列表中。
3.如果新生成的编号已在arraylist停止内
import java.util.ArrayList;
import java.util.Random;
public class SameNumber {
public static void main(String args[]) {
Random rand = new Random();
ArrayList<Integer> list=new ArrayList<Integer>();
int newRand=rand.nextInt(100);
while(!list.contains(newRand)){
list.add(newRand);
newRand=rand.nextInt(100);
}
System.out.print(list);
}
}
import java.util.ArrayList;
导入java.util.Random;
公共类样本{
公共静态void main(字符串参数[]){
Random rand=新的Random();
ArrayList=新建ArrayList();
int newRand=rand.nextInt(100);
而(!list.contains(newRand)){
列表。添加(纽兰);
newRand=rand.nextInt(100);
}
系统输出打印(列表);
}
}
您的方法非常间接……让我们直接按照说明进行尝试:
boolean-seen[100]
)初始化为false。每当看到一个数字时,将seen[]
标记为true
。如果seed[]
为真,则表示您以前生成过它
顺便说一句,使用
ArrayList
跟踪这些内容并不是数据结构的最佳选择。当您准备好查看Java集合时,请查看HashSet
,它具有恒定的时间(不取决于列表的大小)执行contains
,您的方法非常间接……让我们直接按照说明进行尝试:
boolean-seen[100]
)初始化为false。每当看到一个数字时,将seen[]
标记为true
。如果seed[]
为真,则表示您以前生成过它
顺便说一句,使用
ArrayList
跟踪这些内容并不是数据结构的最佳选择。当您准备好查看Java集合时,请查看HashSet
,它具有恒定的时间(不取决于列表的大小)执行包含,我会将值设置为布尔值数组,如果有数字,则将其设置为true。然后,您只需使用随机数作为该数组的索引:
boolean[] values = new boolean[100];
int index = Random.nextInt(100);
while(!values[index]){
System.out.println(index+1);
values[index] = true;
index = Random.nextInt(100);
}
我会将值设置为布尔值数组,如果您的数字在那里,则将其设置为true。然后,您只需使用随机数作为该数组的索引:
boolean[] values = new boolean[100];
int index = Random.nextInt(100);
while(!values[index]){
System.out.println(index+1);
values[index] = true;
index = Random.nextInt(100);
}
即使这不是家庭作业(我希望这不会