Porównywanie tablic

0

Jak chcę aby pętla się wykonywała dopóki dwie tablice nie będą równe to co mam napisać w nawiasach po słowie while?

Chodzi o to, że jest stała jakas tablica, potem komputer losuje w tetli druga tablice, następnie sprawdza czy obie tablice są takie same, jeśli nie są takie same to znowu losuje druga tablice i porównuje do tej stałej.

Jak się zapisuje while ( tablica stała różna od tablicy wylosowanej)

0

Patrząc na dokumentację Arrays:
http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

powinno działać:
while(!Arrays.equals(array1, array2))

0

No tak, ale to chyba znaczy, że coś tam będzie się wykonywała dopóki dwie tablice są równe. A jak zapisać że coś w pętli ma się wykonywać dopóki dwie tablice MIĘsa równe?

Przepraszam za głupie może pytanie ale kompletnie się nie znam.

0

Jeśli array1 i array2 będą identyczne, to Arrays.equals(array1, array2) zwróci wartość true, po dodaniu negacji (!) mamy więc:
while(!true), czyli while (false), a więc blok nie zostanie wykonany

Jeśli array1 i array2 będą różne, to Arrays.equals(array1, array2) zwróci wartość false, po dodaniu negacji (!) mamy więc:
while(!false), czyli while (true), a więc blok zostanie wykonany

Jeśli chcemy odwrotny przypadek to wystarczy nie dodawać negacji.

0

Ok dzięki. Super. O to chodziło.

0

Należy zachować dużą ostrożność podczas uruchamiania programu, przykładowe wyniki:

rozmiar tablicy   zakres liczb w tablicy  ilość losowań
       5                             20      3 716 646
       5                             30     53 657 227
      10                              5     16 865 729
      10                              6    414 978 054
0

Coś napisałem ale to nie działa. W moim poniższym kodzie mam zadeklarowane swoje dwie liczby w tablicy. Są to liczby 3 oraz 5. Po włączeniu programu pojawia się zapytanie, " Ile liczb chcesz wylosować". No to trzeba wpisać dwie ( trzeba podać taką ilość liczb jaka została zadeklarowana przeze mnie). Następnie podajemy z jakiego zakresu mają być liczby losowane. No to załóżmy że od 1 do 10. Następnie system ma tak długo losować dwie liczby z zakresu od 1 do 10 aż trafi w te które ja podałem czyli 3 oraz 5. W wyniku ma pokazywać ile wykonał losowań zanim trafił. Nie wiem co jest nie tak ale to nie działa. Pojawia się błąd:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -2
at Nauka1.main(Nauka1.java:25)

Proszę o pomoc.

import java.util.*;
public class Nauka1
{
	public static void main(String[] args)
	{
		Scanner input = new Scanner(System.in);
		System.out.println("Ile liczb chcesz wylosować?");
		int ilość = input.nextInt();
		System.out.println("Liczby mają być losowane z zakresu od 1 do ...?");
		int zakres = input.nextInt();		
		
		int [] h =  {3,5};                          // tutaj zadeklarowałem moje liczby
				
		int a[]= new int [zakres];
		for(int i = 0; i<a.length; i ++)             // tutaj jest deklarowana tablica główna czyli szablon z liczbami
			a[i] = i+1;                              // z których system będzie losował
				
		int b[] = new int[ilość];                    // tutaj tworzy się pusty losowany kupon
		
		long w = 0;
		do
		{ 			
		  int	r = (int)(Math.random()*zakres);
		  for(int i = 0; i<b.length; i++)
		   b[i] = a[r];                              // tutaj pusty kupon zapelnia się losowymi liczbami
		  a[r] = zakres-1;
		  zakres--;
		  Arrays.sort(b);
		  w++;
		}	
		while(!Arrays.equals(b	, h));
		System.out.println(w);                      // w ma liczyc ile razy system bedzie musial losowac swoje liczby az trafi
		                                           // w te podane przeze mnie
		
	}
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1