Mam tablicy:Java: Tablica jeśli wszystko jedno
int tarningar[] = new int[5];
który przechowuje liczby. Gdy wszystkie liczby są takie same, system.out.println ("ok");
Jak mogę to zrobić?
Mam tablicy:Java: Tablica jeśli wszystko jedno
int tarningar[] = new int[5];
który przechowuje liczby. Gdy wszystkie liczby są takie same, system.out.println ("ok");
Jak mogę to zrobić?
boolean flag = true;
int first = tarningar[0];
for(int i = 1; i < 5 && flag; i++)
{
if (tarningar[i] != first) flag = false;
}
if (flag) System.out.println("ok");
Wszystkie wartości są takie same odpowiada Wszystkie wartości są równe dowolnej wybranej wartości.
Po prostu wybierz jeden jako , numer referencyjny i porównaj wybraną wartość z wszystkimi innymi wartościami.
public class EqualArrayTest {
public static boolean isAllEqual(int[] a){
for(int i=1; i<a.length; i++){
if(a[0] != a[i]){
return false;
}
}
return true;
}
public static void main(String[] args){
System.out.println(isAllEqual(new int[]{2,2,2}));
System.out.println(isAllEqual(new int[]{2,2,1}));
}
}
Proste rozwiązanie bez pętli (i stałej długości matrycy 5):
int v = tarningar[0];
if (tarningar[1] == v && tarningar[2] == v && tarningar[3] == v && tarningar[4] == v) {
System.out.println("All the same!");
}
boolean isSame = true;
for(int i = 1; i < tarningar.length; i++) {
if (tarningar[i] != tarningar[0]) {
isSame = false;
}
}
if (isSame) {
System.out.println("OK");
}
import java.util.Arrays;
/**
* Don't take it serious.
* But it works.
*/
public class Demo {
public static boolean isAllSame(int... numbers) {
int[] firstItemArray = new int[numbers.length];
Arrays.fill(firstItemArray, numbers[0]);
return Arrays.equals(numbers, firstItemArray);
}
public static void main(String[] args) {
System.out.println(isAllSame(1,1,1,1));
System.out.println(isAllSame(1,1,1,2));
}
}
z Google Guava:
boolean allEqual = Sets.newHashSet(Ints.asList(tarningar)).size() == 1;
Pomysłowo używać zestawu, aby sprawdzić, czy wszystkie wartości są takie same. Nie pomyślałbym o tym. –
W Java 8 z strumień API:
Set<Integer> uniqueValues = Arrays.stream(tarningar)
.boxed()
.collect(Collectors.toSet());
boolean allEqual = uniqueValues.size() == 1;
Jeśli użyto Integer[]
zamiast int[]
poniższych jest obsługiwany w języku Java 7 i przed:
// Integer[] tarninagr = ...
Set<Integer> uniqueValues = new HashSet<>(Arrays.asList(tarningar));
boolean allEqual = uniqueValues.size() == 1;
Oto bardziej zwięzłe Java 8 strumieni przykład:
Arrays.stream(tarningar).distinct().count() == 1
Brzmi jak możliwej lekcji. Co próbujesz? –
if (tarningar [1] == tarningar [2] && tarningar [3] == tarningar [4]) .. ale potem brakuje mi tarningara [0] i to nie jest praca domowa :) – Karem
oprócz braku 'tarningar [0] ] "to także nie sprawdza, czy wszystkie elementy są takie same - sprawdza tylko, czy elementy 1 i 2 są takie same, a elementy 3 i 4 są takie same. '{1, 2, 2, 3, 3}' przechodzą ten test. – Jesper