Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.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 49个项目中的第6个,前6个don';t包括一个副本,第7个数字必须不是前6个数字中的任何一个_Java_Random_Int - Fatal编程技术网

Java 49个项目中的第6个,前6个don';t包括一个副本,第7个数字必须不是前6个数字中的任何一个

Java 49个项目中的第6个,前6个don';t包括一个副本,第7个数字必须不是前6个数字中的任何一个,java,random,int,Java,Random,Int,第七个数字单独显示。所以在我看来,我不能把7个数字放在一个数组中 我想打印一行中的前6个数字和分开的第7个数字 有人能帮忙吗 前6个数字介于1-49和低高排序之间,不包含重复项 第7个数字不是前6个数字中的一个,而是介于1-49之间 我已经生成了第7个数字,但有时它是前6个数字之一的重复 这就是任务: 写一个程序,生成随机数,我可以在我的下一张彩票上输入。程序启动时,应生成7个数字。前6项按升序输出。第七个数字是超数。它是单独发行的。它不是按顺序排列的 import java.util.Arra

第七个数字单独显示。所以在我看来,我不能把7个数字放在一个数组中

我想打印一行中的前6个数字和分开的第7个数字

有人能帮忙吗

前6个数字介于1-49和低高排序之间,不包含重复项

第7个数字不是前6个数字中的一个,而是介于1-49之间

我已经生成了第7个数字,但有时它是前6个数字之一的重复

这就是任务: 写一个程序,生成随机数,我可以在我的下一张彩票上输入。程序启动时,应生成7个数字。前6项按升序输出。第七个数字是超数。它是单独发行的。它不是按顺序排列的

import java.util.Arrays;
import java.util.Random;
    public class RandomizedArrayExample
    {
        public static int[] zahlen = null;    
        public static void main(String[] args)
        {
            Random W = new Random();
            try
            {
                zahlen = new int[6];
            
                Random y = new Random();
                int gesamt = 0;
                boolean status = true;
                while(status)
                {
                    int zahl = y.nextInt(49)+1;          
                    if(!isCompleted()){
                        if(!isDuplicate(zahl)){
                            zahlen[gesamt] = zahl;
                            gesamt++;
                        }else{
                            continue;
                        }
                    }else{
                        status = false;
                    }
                }
             
           
          } catch (Exception e) {
              e.printStackTrace();
          }
          
          for(int q = 0; q<6-1; q++) {
              for (int j = q+1; j<zahlen.length; j++) {
                 if(zahlen[q] > zahlen[j]) {
                    int k = zahlen[q];
                    zahlen[q] = zahlen[j];
                    zahlen[j] = k;
                 }
              }
          }
          
        String ihreZahlen = "----Ersten 6 Zahlen----";
        String superZahl = "-------Superzahl-------";
        
        int x = W.nextInt(49)+1;
        System.out.println(ihreZahlen);
        System.out.println(Arrays.toString(zahlen));
        System.out.println(superZahl);
      }
      public static boolean isCompleted(){
          boolean status = true;
          for (int i = 0; i < zahlen.length; i++){
              if(zahlen[i]==0){
                  status = false;
                  break;
              }
          }
          return  status;
      }
      public static boolean isDuplicate(int num){
          boolean status = false;
          for (int i = 0; i < zahlen.length; i++){
              if(zahlen[i]== num){
                  status = true;
                  break;
              }
          }
          return  status;
      }
    }

当您执行
intx=W.nextInt(49)+1时,您会看到38是重复的您有可能获得与示例输出相同的副本。相反,您需要一个循环,再次使用
isDuplicate()
检查是否有重复项,并在没有重复项时中断循环

对于一个不同的可能是面糊的解决方案,将所有7个数字放在一个数组中没有错。你可以把它们分成6个数字和1个数字。这里有一个方法:

    Random w = new Random();
    int[] allNumbers = IntStream.generate(() -> w.nextInt(49) + 1)
            .distinct()
            .limit(7)
            .toArray();
    int[] numbers = Arrays.copyOf(allNumbers, 6);
    Arrays.sort(numbers);
    int superNumber = allNumbers[6];

    String ihreZahlen = "----Ersten 6 Zahlen----";
    String superZahl = "-------Superzahl-------";

    System.out.println(ihreZahlen);
    System.out.println(Arrays.toString(numbers));
    System.out.println(superZahl);
    System.out.println(superNumber);
示例输出:

----Ersten 6 Zahlen----
[14, 16, 30, 38, 41, 45]
-------Superzahl-------
38

当你做
intx=W.nextInt(49)+1您有可能获得与示例输出相同的副本。相反,您需要一个循环,再次使用
isDuplicate()
检查是否有重复项,并在没有重复项时中断循环

对于一个不同的可能是面糊的解决方案,将所有7个数字放在一个数组中没有错。你可以把它们分成6个数字和1个数字。这里有一个方法:

    Random w = new Random();
    int[] allNumbers = IntStream.generate(() -> w.nextInt(49) + 1)
            .distinct()
            .limit(7)
            .toArray();
    int[] numbers = Arrays.copyOf(allNumbers, 6);
    Arrays.sort(numbers);
    int superNumber = allNumbers[6];

    String ihreZahlen = "----Ersten 6 Zahlen----";
    String superZahl = "-------Superzahl-------";

    System.out.println(ihreZahlen);
    System.out.println(Arrays.toString(numbers));
    System.out.println(superZahl);
    System.out.println(superNumber);
示例输出:

----Ersten 6 Zahlen----
[14, 16, 30, 38, 41, 45]
-------Superzahl-------
38

在这里,您可以在不检查x是否重复的情况下为x指定一个值:

int x = W.nextInt(49)+1;
添加一些逻辑来检查它是否已经在您的“zahlen数组”中。最简单的方法是在它下面添加一个while循环,并使用isDuplicate方法检查它是否已经在zahlen数组中。在这种情况下,您可以指定x个新值

int x;
do{ 
   x = W.nextInt(49)+1;
}while(isDuplicate(x)); 

在这里,您可以在不检查x是否重复的情况下为x指定一个值:

int x = W.nextInt(49)+1;
添加一些逻辑来检查它是否已经在您的“zahlen数组”中。最简单的方法是在它下面添加一个while循环,并使用isDuplicate方法检查它是否已经在zahlen数组中。在这种情况下,您可以指定x个新值

int x;
do{ 
   x = W.nextInt(49)+1;
}while(isDuplicate(x)); 

我建议这样做:1)生成49个数字的数组2)随机数组3)从数组中获取前7个数字-我仍然不明白是什么阻止了你请显示程序的输出示例。我建议这样做:1)生成49个数字的数组2)随机数组3)从数组中获取前7个数字数组-我仍然不明白是什么阻止了你请显示你程序的输出示例。