public class Search
{
public static void main(String[] args)
{
int idx = -1;
int len = 1000;
int abc[] = new int[] { 1, 2, 3, 4, 5 }; int[] nums = new int[len];
for (int i = 0; i < len; i++) 
nums[i] = (int)(Math.random() * 10);
                                for (int i = 0; i < len; i++)
{
System.out.print(nums[i]);
System.out.print("\t");
if (i % 10 == 9) System.out.println();
}
}
}这个用for循环要怎么实现呢

解决方案 »

  1.   


    public class Search {
    public static void main(String[] args) {
    int idx = -1;
    int len = 100000;
    int abc[] = new int[] { 1, 2, 3, 4, 5 };
    int[] nums = new int[len];
    for (int i = 0; i < len; i++)
    nums[i] = (int) (Math.random() * 10);
    //nums[10] = 1;nums[11]=2;nums[12]=3;nums[13]=4;nums[14]=5;
    //System.out.println(java.util.Arrays.toString(nums));
    for (int i = 0; i < len-abc.length; i++) {
    for(int j=i,k=0;k<abc.length;j++,k++) {
    if(nums[j] != abc[k]) {
    break;
    }
    System.out.println(k);
    if(k == (abc.length - 1)){
    System.out.println("gg"+(j-abc.length));
    System.exit(0);
    }
    }
    }
    }
    }回家,就不写注释了
      

  2.   

    利用HashSet第一次添加返回true,再次为false的特性。
      

  3.   

    /*我是这样写的 我把你的1000扩大了100倍 因为连续出现12345的几率太小了,所以把数的倍数扩大,即使这样你还要多点几次运行才有机会出现你想要的结果!
    上程序!
    程序写的有些复杂 ,有高手的话请简化下!
    */
    public class Search { public static void main(String[] args)
    {
    int idx = -1;
    int len = 100000;
    int abc[] = new int[] { 1, 2, 3, 4, 5 };
    int[] nums = new int[len];
    for (int i = 0; i < len; i++){  
    nums[i] = (int)(Math.random() * 10);   
    }
    int index = 0;
    for(int j=0;j<len-4;j++){
    if(nums[j] ==1&& j<len)
    {
    int temp =j;
    j++;
    if(nums[j] == 2 )
    {
    j++;
    if(nums[j] == 3)
    {
    j++;
    if(nums[j] ==4)
    {
    j++;
    if(nums[j] == 5)
    {
    index = temp;
    break;
    }
    }
        }
    }

    }

    }
    if(index!=0)
    {
    System.out.println("第一连续出现的位置是:" + index);
    System.out.println("输出该位置以后的五个数字!");
    for(int k1 = index;k1<index+5;k1++)
    {
    System.out.print(nums[k1] + " ");
    }
    }else{System.out.println("没有同时出现\"1,2,3,4,5\"!");}
    }
    }
      

  4.   

    public class SerchTest{
    public static void main(String args []){
    StringBuilder stb = new StringBuilder();
    int a=0;
    for(int i=0;i<60000;i++){
    a = (int)(Math.random()*10);
    stb.append(a);
    }

    String s =stb.toString();
    System.out.println(s.indexOf("12345"));
    }
    }
    将数字上升到6万左右,比较容易找到。汗
      

  5.   

    public class Search
    {
    public static boolean equals(int[] a, int[] b, int idx, int len)
    {
    if (b.length < idx + len) return false;
    for(int i = 0, m = idx; m < idx + len; m++, i++)
    {
    if(a[i] != b[m]) return false;
    }
    return true;
    }
    public static void main(String[] args)
    {
    int idx = -1;
    boolean found = false;
    int len = 10000;
    int abc[] = new int[] { 1, 2, 3, 4, 5 };

    int[] nums = new int[len];
    for (int i = 0; i < len; i++)
                         nums[i] = (int)(Math.random() * 10);

    for (int i = 0; i < len; i++)
    {
    if (equals(abc, nums, i, abc.length))
    {
    System.out.println(i);
    found = true;
    break;
    }
    }
                    for (int i = 0; found && i < len; i++)
    {
    System.out.print(nums[i]);
    System.out.print("\t");
    if (i % 10 == 9) System.out.println();
    }
    }
    }在这里我创建了一个equals方法,但是关于b数组越界的问题还是没搞清楚,if (b.length < idx + len) return false;这句要怎么写的
      

  6.   

    0-4位作为一个字符串,1-5位第二个字符串,2-6位第三个字符串,那么接着匹配字符串第一次,和string a="12345"相等的字符串,第几个字符串和这个相等,那么12345就是第一次出现的位置
      

  7.   


    public class Search{
    public static void main(String[] agrs){
    int [] rad=new[] 1000;
    for(i=0;i<rad.length;i++){
    rad[i]=(int)(Math.random() * 10)
    }
    String[] str1=new String[996];
    String str2="12345";
    for(i=0;i<str1.length;i++){
    String[i]=toString(rad[i])+toString(rad[i+1])+toString(rad[i+2])+toString(rad[i+3])+toString(rad[i+4]);
    if(String[i] equals str2){
    System.out.,println("第一次出现的位置是第"+i+"位")
    break;
    }
    }}
    }
      

  8.   

    第二个for里面写错了一个:String[i]应该是str1[i]
      

  9.   

    额,我现在在想随机存取10个英文字符,然后从中找出第一次出现某个比如“abd”出现的位置
      

  10.   

    把int[]编成char[]啊,string变成abc就可以了,更简单!都不用toString()
      

  11.   

    char数组都是以字符串的形式存储的,可以直接加。
    str2=char[i]+char[i+1]+char[i+2];
    str1=abd;
    str1 equals str2;
    ...
      

  12.   

    那随即存储的是?汉字或者什么?直接用字符串数组呗,string[]
      

  13.   

    public class Test
    {
      public static void main(String args[])
        {
            int arr[]={ 1, 2, 3, 4, 5 };
    int len=arr.length;
            int num,i=0,index=0;
    //uloaix: List <String> list=new ArrayList <String> (); 
    List <String> list = new ArrayList <String> ();
            do{
    num = (int) (Math.random() * 10);
    if(num==arr[i]) i++;
    else i=0;
    index++;
    //uloaix: list.add(num+"");
            }while(i<len);
    System.out.println(" is "+index);
    //uloaix: for(int j=list.size()-10;j<list.size();j++){
    //uloaix: System.out.print(list.get(j));
    //uloaix: }
        }
    }
    这是生成一随机数,就比较,字符串的比较修改下就行。注释的部分,是将生成的随机数最后一部分,打印出来,看是否符合。
      

  14.   


    ++ 将数组转化为 String ,然后用 indexOf(String substring) 方法就可以了。
      

  15.   

    2楼写的很漂亮,
    这句修改一下:   System.out.println("gg"+(j-abc.length));
    改成        System.out.println("gg"+(j-abc.length-1));
         或者    System.out.println("gg"+ i);