Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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 如何用随机值填充数组1-110_Java_Arrays_For Loop_Random - Fatal编程技术网

Java 如何用随机值填充数组1-110

Java 如何用随机值填充数组1-110,java,arrays,for-loop,random,Java,Arrays,For Loop,Random,我想用随机位(1和0)填充tab[110]数组。不知道如何填充值1-110,但不知道如何填充值0-109。 我的for循环: for (int i = 0; i<tab.length; i++) { Random r = new Random(); tab[i] = r.nextInt(2); if (i%25==0) {

我想用随机位(1和0)填充tab[110]数组。不知道如何填充值1-110,但不知道如何填充值0-109。 我的for循环:

for (int i = 0; i<tab.length; i++)
            {

                Random r = new Random();
                tab[i] = r.nextInt(2);
                if (i%25==0)
                {
                    System.out.println("");
                }
                System.out.print(tab[i]+"("+i+")"+", ");

            }

for(int i=0;i在Java数组中,从0开始索引。因此,第一个元素的索引将为0,第N个元素的索引将为N-1。因此,由于需要在数组中保留110位,因此数组将从0到109索引

为了满足引用索引中从1开始的元素的要求,您可以编写一些方法,通过基于1的索引访问数组

e、 g

因此,for循环将按如下方式记录日志

for (int i = 1; i<=110; i++)
{

   Random r = new Random();

   setArrayValue(tab, i,r.nextInt(2));
   if (i%25==0)
   {
       System.out.println("");
   }
   System.out.print(getArrayValue(tab, i)+"("+i+")"+", ");

 } 

for(int i=1;包含110个项目的iAn数组的编号从0到109。您不想执行110,否则将获得
ArrayIndexOutOfBoundsException
。那么如何在数组中获取110个随机位(1和0)?执行选项卡[111]数组,然后移动迭代器+1?你到底想要什么?你说的是随机位,但你想要的是从1到110的数字。它是一个或另一个。要么是随机的,要么是确定性的。两者都不可能同时出现。我也看不出有问题。顶部的for循环不会抛出
ArrayIndexOutOfBoundsException
。我想把110个随机1和0位的行放进去,所以是“1000110110001”。谢谢。所以要使用getter和setter的方法,我必须创建普通数组[110],并把这些值放在那里?访问它们会更方便,因为如果我想要索引5(在数组4索引中)中的值,然后这个值显示出来,就像它来自索引5(实际上来自索引4)?简单地说,我称之为直觉,但程序会知道它是n-1索引?@Chris:是的,你的理解是正确的。你可以创建一个数组[n]并使用建议的方法使用索引1到N访问它。这些方法会将基于1的索引转换为Java使用的基于0的索引。好的,所以我只想能够直观地调用这些值,但不清楚地说明(描述)它。因此,这些值可以自然存储,而不是强制数组从1索引开始(不自然地)(对于0索引中的数组)同时我可以称之为直观的(对于人类来说很自然)。再次感谢。
for (int i = 1; i<=110; i++)
        {

            Random r = new Random();

            tab[i] = r.nextInt(2);
            if (i%25==0)
            {
                System.out.println("");
            }
            System.out.print(tab[i]+"("+i+")"+", ");

        }
package teleinformatykalab2;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;


public class TeleinformatykaLab2 {

    //Funkcja wypelniajaca tablice ciagiem losowych bitów 0 lub 1 //

    static boolean[] bity;

    public static void Losowanie(int tab[]){

        ////int [] tab = new int[110];

        for (int i = 0; i<110; i++)
        {
            Random r = new Random();
            tab[i] = r.nextInt(2);
            if (i%25==0)
            {
                System.out.println("");
            }
            System.out.print(tab[i]+"("+i+")"+", ");

        }
        System.out.println("");

}
    /////////////////


    //Funkcja wywietla bity, których indeks w tablicy jest wartoci¹ kolejnej potêgi liczby dwa//
    public static void zamienBity(int tab[], int tabBit[])
    {
        ////System.out.println("\n"+tab[0]+tab[109]+"\n");
        //int [] power = new int [7];
        bity = new boolean[7];
        for (int i=0; i<110; i++)
        {

            if (isPowerOfTwo(i))
                {
                 int j = 0;
                 bity[j] = isPowerOfTwo(i);
                 j++;
                 System.out.print(tab[i]+"("+i+")"+", ");

                }
            if (i%50==0)
            {
                System.out.println("");
            }

        }

        System.out.println("\n");

    }

    //Sprawdzenie ci¹gu kodem Hamminga//
    public static void sprawdzHamming(int tab[], int tabBit[])
    {
        // przypisanie do tabBit bitow o indeksie potêgi dwa
        int [] power = new int [7];
        for(int i=0;i<tabBit.length;i++)
        {
            tabBit[i] = tab[(int)Math.pow(2,i)];
            System.out.print(tabBit[i]+", ");
        }
        System.out.println("////\n");

        //sprawdzenie pierwszej pary bitów
        System.out.println("\nPierwsza para");

        int [] skip = {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,36,39,41,43,45,47,49,
                        51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87,89,91,93,95,97,99,
                        101,103,105,107,109};    
        for (int i : skip)
        {
             System.out.print(tab[i] + "("+i+")"+",");

                if (i%25==0)
                {
                    System.out.println("");
                }
        }
        System.out.println("");

        //sprawdzenie drugiej pary bitów
        System.out.println("\nDruga para");

         int skip2 []= {3,6,7,10,11,14,15,18,19,22,23,26,27,30,31,34,35,38,39,42,43,46,47,
                        50,51,54,55,58,59,62,63,66,67,70,71,74,75,78,79,82,83,86,87,90,91,94,95,98,99,102,103,106,107};
          for (int j : skip2)
          {
          System.out.print(tab[j] + "("+j+")"+",");
          if (j%25==0)
                {
                    System.out.println("");
                }
          }
        System.out.println();

        //sprawdzenie trzeciej pary bitów
        System.out.println("\nTrzecia para");

         int skip3 []= {5,6,7, 12,13,14,15, 20,21,22,23, 28,29,30,31, 36,37,38,39, 44,45,46,47,
                        52,53,54,55, 60,61,62,63, 68,69,70,71, 76,77,78,79, 84,85,86,87, 92,93,94,95, 100,101,102,103, 108,109};
          for (int k : skip3)
          {
          System.out.print(tab[k] + "("+k+")"+",");
          if (k%18==0)
                {
                    System.out.println("");
                }
          }
        System.out.println();

         //sprawdzenie czwartej pary bitów
        System.out.println("\nCzwarta para");

         int skip4 []= {9,10,11,12,13,14,15,16, 25,26,27,28,29,30,31,32, 41,42,43,44,45,46,47,48,
                       57,58,59,60,61,62,63,64, 73,74,75,76,77,78,79,80, 89,90,91,92,93,94,95,96,
                       105,106,107,108,109};
          for (int l : skip4)
          {
          System.out.print(tab[l] + "("+l+")"+",");
          if (l%8==0)
                {
                    System.out.println("");
                }
          }
        System.out.println();

        //sprawdzenie pi¹tej pary bitów
        System.out.println("\nPi¹ta para");

        for (int m=17; m<110; m++)
        {
            if ((m>=32 && m<=47) && (m>=64 && m<=79) && (m>=96 && m<=111)) continue;
            System.out.print(tab[m] + "("+m+")"+",");
            if (m%16==0)
                {
                    System.out.println("");
                }
        }
        System.out.println();

        //sprawdzenie szótej pary bitów
        System.out.println("\nSzóta para");

        for (int m=33; m<110; m++)
        {
            if (m>=65 && m<=96)/* && (m>=64 && m<=79) && (m>=96 && m<=111))*/ continue;
            System.out.print(tab[m] + "("+m+")"+",");
            if (m%16==0)
                {
                    System.out.println("");
                }
        }
        System.out.println();

        //sprawdzenie siódmej pary bitów
        System.out.println("\nSiódma para");

        int [] sixtyfour = new int [120];

        for (int m=65; m<110; m++)
        {
            //if (m>=65 && m<=96)/* && (m>=64 && m<=79) && (m>=96 && m<=111))*/ continue;
            System.out.print(tab[m] + "("+m+")"+",");
            if (m%16==0)
                {
                    System.out.println("");
                }
        }
        System.out.println("\n");




    ////Tablica liczników par bitów//
        int [] counter = new int [7];

    ////Tablica wywietlanych b³êdów//
        Boolean [] error = new Boolean [7];

        Boolean [] errors = new Boolean [7];
  //////////Liczniki bitów jedynkowych////        
        int licznik1=0;
        for (int a=1; a<110;a++)
        {
            if (tab[a]==1)
                licznik1++;
        }
        int l1;
        String spr;
        if (licznik1%2==1) l1=1; else l1=0;
        if (l1==tabBit[0]) {
            error [0] = true;
            errors[0] = true;
        }//spr="ok";
        else {
            error [0]=false;
            errors[0] = false;
        }
        counter [0] = l1;

        System.out.println("W grupie 1: "+licznik1+"("+tabBit[0]+")" + " >"+counter[0]+" "+error[0]);



        int licznik2=0;
        for (int b=3; b<108;b++)
        {
            if (tab[b]==1)
                licznik2++;
        }
        int l2;
        if (licznik2%2==1) l2=1; else l2=0;
        if (l2==tabBit[1]) {
            error [1]=true;
            errors [1]=true;
        }
        else {
            error [1]=false;
            errors [1] = false;
        }
        counter [1] = l2;
        System.out.println("W grupie 2: "+licznik2 +"("+tabBit[1]+")"+" >"+counter [1]+" "+error[1]);


        int licznik3=0;
        for (int c=5; c<109;c++)
        {
            if (tab[c]==1)
                licznik3++;
        }
        int l3;

        if (licznik3%2==1) l3=1; else l3=0;
        if (l3==tabBit[2]) {
            error[2]=true;
            errors [2] = true;
        }
        else {
            error[2]=false;
            errors [2] = false;
        }
        counter [2] = l3;
        System.out.println("W grupie 3: "+licznik3 +"("+tabBit[2]+")"+ " >"+counter[2]+" "+error[2]);


        int licznik4=0;
        for (int d=9; d<109;d++)
        {
            if (tab[d]==1)
                licznik4++;
        }
        int l4;

        if (licznik4%2==1) l4=1; else l4=0;
        if (l4==tabBit[3]) {
            error[3]=true;
            errors [3]=true;
        }
        else {
            error[3]=false;
            errors[3]=false;
        }
        counter[3]=l4;
        System.out.println("W grupie 4: "+licznik4 +"("+tabBit[3]+")"+ " >"+counter[3]+" "+error[3]);
        //if (l4==tabBit[3]) System.out.print(" ok");

        int licznik5=0;
        for (int e=17; e<110;e++)
        {
            if (tab[e]==1)
                licznik5++;
        }
        int l5;

        if (licznik5%2==1) l5=1; else l5=0;
        if (l5==tabBit[4]) {
            error[4]=true;
            errors [4]=true;
        }
        else {
            error[4]=false;
            errors [4]=false;
        }
        counter[4] = l5;
        System.out.println("W grupie 5: "+licznik5 + "("+tabBit[4]+")"+" >"+counter[4]+" "+error[4]);


        int licznik6=0;
        for (int f=33; f<110;f++)
        {
            if (tab[f]==1)
                licznik6++;
        }
        int l6;

        if (licznik6%2==1) l6=1; else l6=0;
        if (l6==tabBit[5]) {
            error[5]=true;
            errors[5]=true;
        }
        else {
            error[5]=false;
            errors[5]=false;
        }
        counter [5] = l6;
        System.out.println("W grupie 6: "+licznik6+"("+tabBit[5]+")"+" >"+counter[5]+" "+error[5]);


        int licznik7=0;
        for (int g=65;g<110; g++)
        {
            if (tab[g]==1)
                licznik7++;
        }
        int l7;

        if (licznik7%2==1) l7=1; else l7=0;
        if (l7==tabBit[6]) {
            error[6]=true;
            errors[6]=true;
        }
        else {
            error[6]=false;
            errors[6]=false;
        }
        counter [6] = l7;
        System.out.println("W grupie 7: "+licznik7+"("+tabBit[6]+")"+" >"+counter [6]+" "+error[6]);

        //Tablica boolean ok lub b³¹d//
        ArrayList<Boolean> true_or_false = new ArrayList<>();
        for (Boolean tof : true_or_false)
        {
            int i=0;
            i++;
            true_or_false.add(error[i]);
            System.out.print(tof+",");

        }

        /*//Dwuwymiarowa tablica bitów i poprawnoci
        int [][] bit_check = new int [7][7];
        int [] myInt = new int [7];
        for (int i=0,j=0; i<7; i++, j++)
        {
            if (i==0) System.out.println("dwuwymiarowa tablica");
            if (errors[i]==false)
            {
                myInt[i]= (errors[i]) ? 1 : 0;
                bit_check[i]=counter;
                bit_check[j]=myInt;
                  System.out.print(bit_check[i][j]+",");
            }
        }*/

        ////sumowanie par, które sa blêdne////
        ArrayList<Integer> error_sum = new ArrayList<>();
        System.out.println("\n"); 


        for (int i=0, j=0; i<7; i++)
        {
            if (error[i]==false)

            {
                //System.out.println(counter[i]+" "+error[i]);

                error_sum.add(counter[i]);
                    System.out.println(counter[i]+", ");

            }

                //System.out.print("//"+power[j]+", ");
                //System.out.println("Bity zacne: " + bity[i]);
        }
        System.out.println("\n");
        for (Integer num : error_sum)
        {
            System.out.print(num+", ");
        }
               //System.out.println("\n"+error_sum[0]+","+error_sum[1]+","+error_sum[2]+","+error_sum[3]+","+error_sum[4]+","+error_sum[5]+","+error_sum[6]);
         System.out.println("\n");

       ////Sumowanie indeksów b³êdnych bitów//
         ArrayList<Integer> error_sum_pair = new ArrayList<>();

         /*for (Integer num : error_sum_pair)
         {
             do{
                 System.out.print();
             }
             if (true_or_false==false)
         }*/
     ////Wskazanie blednego bitu, przez sumowanie blednych par bitow//
         int suma=0;
         int [] grupa = new int [7];
         grupa[0] = 1;
         grupa[1] = 2;
         grupa[2] = 4;
         grupa[3] = 8;
         grupa[4] = 16;
         grupa[5] = 32;
         grupa[6] = 64;

    for (int i=0; i<7; i++)
    {        
        if (i==0) System.out.print("Numery blednych bitow w grupach: ");
        if (error[i]==false) 
        {
            System.out.print(grupa[i]+", ");
            suma+=grupa[i];
        }

            if (i==6) System.out.println("\nIndeks blednego bitu w ciagu: "+suma);
    }     

    int wskOfIndex;
    for (int i=0, j=0; i<110; i++)
    {
        if (j>6) break;
        if (i==grupa[j]) System.out.println("Bledny bit we wskazanym "+suma+" indeksie: "+tab[i]);
        /*wskOfIndex=Arrays.asList(tab).indexOf(grupa[i]);
        if (i==109) System.out.println(wskOfIndex);*/
    }

    /*////Podmiana blednego bity na prawidlowy//
    for (int i=0; i<110; i++)
    {
        if (i==suma)
            {
             if (tab[i]==0) tab[i]=1;
             else tab[i]=0;
            };
    }

    ////Ponowne wygenerowanie, teraz juz prawidlowego ciagu bitow//
    for (int i=0; i<110; i++)
    {
        if (i%25==0)
            {
                System.out.println("");
            }
            System.out.print(tab[i]+"("+i+")"+", ");
    }

        System.out.println("\n");        
    System.out.println("W grupie 1: "+licznik1+"("+tabBit[0]+")" + " >"+counter[0]+" "+error[0]);
    System.out.println("W grupie 2: "+licznik2 +"("+tabBit[1]+")"+" >"+counter [1]+" "+error[1]);
    System.out.println("W grupie 3: "+licznik2 +"("+tabBit[2]+")"+" >"+counter [2]+" "+error[2]);
    System.out.println("W grupie 4: "+licznik2 +"("+tabBit[3]+")"+" >"+counter [3]+" "+error[3]);
    System.out.println("W grupie 5: "+licznik2 +"("+tabBit[4]+")"+" >"+counter [4]+" "+error[4]);
    System.out.println("W grupie 6: "+licznik2 +"("+tabBit[5]+")"+" >"+counter [5]+" "+error[5]);
    System.out.println("W grupie 7: "+licznik2 +"("+tabBit[6]+")"+" >"+counter [6]+" "+error[6]);*/


}





////Funkcja wypisujaca bity o indeksie w tablicy kolejnej potegi 2// 
    private static boolean isPowerOfTwo(int x)
    {
        //return (x & (x-1)) ==0;                
        return (x!=0) && ((x&(x-1)) ==0);
    }


    public static void main(String[] args) {

        int [] tab = new int[110];


    // wywo³anie metody wype³niaj¹cej tablicê ci¹giem losowych bitów 0 lub 1
        Losowanie(tab);
        System.out.println("\n Bity potegi dwa: ");
        int [] tabBit = new int [7];


        zamienBity(tab,tabBit);

        System.out.println("////Bity potegi 2");
        sprawdzHamming(tab,tabBit);
        //powerOfTwo();

        /*int liczby [] = new int[120];
        System.out.println("\n");
        for (int z=1; z<120;z++)
        {
            liczby[z]=z;
            System.out.print(liczby[z]+", ");
            if (z%32==0)
                {
                    System.out.println("");
                }
        }*/

    }
}
int getArrayValue(int[] array, int index){
  return array[index-1]
}

void setArrayValue(int[] array, int index, int value){
   array[index -1] = value;
}
for (int i = 1; i<=110; i++)
{

   Random r = new Random();

   setArrayValue(tab, i,r.nextInt(2));
   if (i%25==0)
   {
       System.out.println("");
   }
   System.out.print(getArrayValue(tab, i)+"("+i+")"+", ");

 }