Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.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
如何在单个数组中查找长度为5的副本。JAVA_Java - Fatal编程技术网

如何在单个数组中查找长度为5的副本。JAVA

如何在单个数组中查找长度为5的副本。JAVA,java,Java,我创建了一个数组,然后以五个为一组进行打印。然后我希望能够搜索数组5,看看是否有任何重复。我试过了,但我只能想办法按每个值搜索,而不是按五个值搜索。如果有人能给我指出正确的方向,那就太好了。谢谢 public class findPat { static int arr [] = new int [10]; static int st = 1; static int end = 56; static double t1;

我创建了一个数组,然后以五个为一组进行打印。然后我希望能够搜索数组5,看看是否有任何重复。我试过了,但我只能想办法按每个值搜索,而不是按五个值搜索。如果有人能给我指出正确的方向,那就太好了。谢谢

 public class findPat {
        static int arr [] = new int [10];
        static int st = 1;
        static int end = 56;
        static double t1;
        static double t2;

        public static void main(String[] args){

            t1=System.currentTimeMillis(); 
            for(int n=0; n<100; n++){   
                for (int i=0; i<arr.length; i++)
                    arr[i]= (int) (Math.random()* (end-st +1)) +st;

                for (int i=0; i<5; i++){ 

                    if (i%5==0) 
                        System.out.println(); 
                        System.out.print("\t" + arr[i]);} 
                    }
            t2=System.currentTimeMillis();
            System.out.println();
            System.out.println();
            System.out.println("\t" + "Total run time is " + ((t2-t1)) + "ms");

            }
        }
但是,每行都在同一数组中,但一次只打印5行。
控制台将不仅仅有这几行。我希望能够搜索数组,并对照其他行检查每一行,以查看它出现了多少次(如果出现)。

您可以使用
哈希表来实现这一点。以您的代码为基础,我已经编写了一个示例实现,但是在不知道您要做什么的情况下,我无法判断这是否是您要寻找的

import java.util.Hashtable;

public class findPat {
    static final int COUNT = 100;

    static Hashtable<String, Integer> compareSet = new Hashtable<String, Integer>();
    static String groupInteger = "";
    static int arr [] = new int [5];
    static int st = 1;
    static int end = 56;
    static double t1;
    static double t2;

    public static void main(String[] args) {
        t1=System.currentTimeMillis(); 
        for(int n = 0; n < COUNT; n++){
            for (int i = 0; i < arr.length; i++) {
                arr[i] = (int) (Math.random()* (end - st + 1)) + st;

            }
            for (int i = 1; i <= 5; i++) {
                groupInteger += arr[i-1];
                System.out.print("\t" + arr[i-1]);
                if (i % 5 == 0) {
                    System.out.println();
                    if (compareSet.containsKey(groupInteger)) {
                        System.out.println("duplicate found");
                        int currentCount = compareSet.get(groupInteger);
                        compareSet.put(groupInteger, currentCount + 1);
                    } else {
                        compareSet.put(groupInteger, 1);                        
                    }
                    groupInteger = "";
                }

            } 
        }
        t2=System.currentTimeMillis();
        System.out.println();
        System.out.println();
        System.out.println("\t" + "Total run time is " + ((t2 - t1)) + "ms");
    }
}
import java.util.Hashtable;
公共类findPat{
静态最终整数计数=100;
静态哈希表比较集=新哈希表();
静态字符串groupInteger=“”;
静态整数arr[]=新整数[5];
静态int st=1;
静态int-end=56;
静态双t1;
静态双t2;
公共静态void main(字符串[]args){
t1=System.currentTimeMillis();
对于(int n=0;n对于(int i=1;i)你说的“按5搜索”是什么意思?我不理解这个问题。请提供一个示例输入和一个示例输出来澄清这个问题。有很多方法,看这个线程:我编辑了这个问题,也许它更有意义。目前,您的代码打印了10个随机数数组中的前5个随机数。它重复了100次。您的问题建议您希望搜索5个值的重复序列。是否可以提供一个关于您要完成的任务的更清晰的概念,或者提供一个代码示例来更清楚地显示您正在尝试执行的操作?这不是100%,但它确实让我找到了正确的方向,非常感谢。我运行了该程序,但是,当我打印compareSet以查看h值是重复的,我得到这个{3623955=1,311471043=1,191644650=1,2754351=1,34492846=1,431540317=1,5=1,3649244028=1,748465055=1,1141473319=1}但是数字与数组中的数字不匹配,它从数组中的任意点开始。对不起,我的错误,我假设您的代码在数组中每五个项目后打印一次,但是由于I%5是0,只有当一个数字可除以5,第五个元素具有索引4时,它才存储第一个元素,后面是5个元素的集合ns进一步(第2-6,第7-11,…)我已经编辑了我的代码。
import java.util.Hashtable;

public class findPat {
    static final int COUNT = 100;

    static Hashtable<String, Integer> compareSet = new Hashtable<String, Integer>();
    static String groupInteger = "";
    static int arr [] = new int [5];
    static int st = 1;
    static int end = 56;
    static double t1;
    static double t2;

    public static void main(String[] args) {
        t1=System.currentTimeMillis(); 
        for(int n = 0; n < COUNT; n++){
            for (int i = 0; i < arr.length; i++) {
                arr[i] = (int) (Math.random()* (end - st + 1)) + st;

            }
            for (int i = 1; i <= 5; i++) {
                groupInteger += arr[i-1];
                System.out.print("\t" + arr[i-1]);
                if (i % 5 == 0) {
                    System.out.println();
                    if (compareSet.containsKey(groupInteger)) {
                        System.out.println("duplicate found");
                        int currentCount = compareSet.get(groupInteger);
                        compareSet.put(groupInteger, currentCount + 1);
                    } else {
                        compareSet.put(groupInteger, 1);                        
                    }
                    groupInteger = "";
                }

            } 
        }
        t2=System.currentTimeMillis();
        System.out.println();
        System.out.println();
        System.out.println("\t" + "Total run time is " + ((t2 - t1)) + "ms");
    }
}