Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java While循环涉及Java编程中为绝对初学者提出的挑战_Java_While Loop - Fatal编程技术网

Java While循环涉及Java编程中为绝对初学者提出的挑战

Java While循环涉及Java编程中为绝对初学者提出的挑战,java,while-loop,Java,While Loop,我正在尝试自己学习Java编程(没有课程/老师/导师等),所以这不是家庭作业 我的问题已经在中提到,但是,我在这本书中还没有深入到足以涵盖ArrayList的程度,正如前面提出这个问题的程序员所说的那样 回答这个问题肯定会帮助大多数初学者更好地理解如何为while循环编写语句,这通常是一个复杂的过程,特别是对于初学者来说 问题是:编写一个while循环,生成1到100之间的随机数,并在生成相同的数两次后停止循环 正如您所认识到的,每次运行该程序时,只会创建1到100之间的两个随机数的输出。我相信

我正在尝试自己学习Java编程(没有课程/老师/导师等),所以这不是家庭作业

我的问题已经在中提到,但是,我在这本书中还没有深入到足以涵盖ArrayList的程度,正如前面提出这个问题的程序员所说的那样

回答这个问题肯定会帮助大多数初学者更好地理解如何为while循环编写语句,这通常是一个复杂的过程,特别是对于初学者来说

问题是:编写一个while循环,生成1到100之间的随机数,并在生成相同的数两次后停止循环

正如您所认识到的,每次运行该程序时,只会创建1到100之间的两个随机数的输出。我相信这一错误是由于第17行引起的:equal=numberCheck==values[I];不正确,因为这是定义while循环条件何时变为true并因此停止计算的语句

非常感谢您的帮助。多谢各位

我的代码是:

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);
}
系统输出打印(列表);
}
}

您的方法非常间接……让我们直接按照说明进行尝试:

  • 生成一个新的随机数
  • 确定你以前是否见过这个随机数
  • 没有?记录您看到的这个随机数,然后转到1
  • 是吗?停止
  • 然后真正的问题是,“我如何确定我以前是否见过这个随机数?”

    因为它是一个有限集,所以可以将布尔数组(
    boolean-seen[100]
    )初始化为false。每当看到一个数字时,将
    seen[]
    标记为
    true
    。如果
    seed[]
    为真,则表示您以前生成过它


    顺便说一句,使用
    ArrayList
    跟踪这些内容并不是数据结构的最佳选择。当您准备好查看Java集合时,请查看
    HashSet
    ,它具有恒定的时间(不取决于列表的大小)执行
    contains

    ,您的方法非常间接……让我们直接按照说明进行尝试:

  • 生成一个新的随机数
  • 确定你以前是否见过这个随机数
  • 没有?记录您看到的这个随机数,然后转到1
  • 是吗?停止
  • 然后真正的问题是,“我如何确定我以前是否见过这个随机数?”

    因为它是一个有限集,所以可以将布尔数组(
    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);
    }
    

    即使这不是家庭作业(我希望这不会