Java feladat 3 ugyan olyan szám a tömbben nem egymás mellett?
Ha nem egymás mellett vannak a számok(3 ugyan olyan szám) akkor true,ha egymás mellet vannak a számok akkor false.
Ha a tömbben van 3 ugyan olyan szám nem egymás után,viszont van 3 olyan szám ami egymás után van akkor is false,hiába teljesül az első feltétel(3 ugyan olyan szám,ami nem egymás mellett váll) Nem tudom megoldani,nagyon kezdő vagyok még.Nem tudok rájönni hogyan kellene.Megköszönném annak aki segítene.
public class Main {
public static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int inNum = sc.nextInt();
int myArray [] = fillArray(inNum);
System.out.println(haveSameThreeTimes(myArray));
}
public static int [] fillArray(int number){
int [] myArray = new int [number];
for(int i = 0; i < myArray.length; i++){
myArray[i] = sc.nextInt();
} return myArray;
}
public static boolean haveSameThreeTimes(int [] array){
int count = 0;
for(int i = 0; i < array.length; i++){
if(array[i] == array[i+2] && array[i] != array[i+1]){
array[i] = count;
return true;
}else count++;
}
return (count == 3);
}
Komolyan ezen a feladaton vergődsz már hetek óta??
Hihetetlen
Ha jól értem a feltételt, akkor három egymás utáni egyforma szám mindenképpen false? Akkor felesleges a másik feltételt vizsgálni, elég ennyi:
public static boolean haveSameThreeTimes(int [] array){
for(int i = 0; i <= array.length-3; i++){
if(array[i] == array[i+1] && array[i] == array[i+2]){
return false;
}
return true;
}
Ha van 3 ugyan olyan szám a tömbben pl: 5 1 5 1 5 6 --> true
5 1 5 1 5 6 4 4 4 -> ez viszont már false,mivel nhiába van benne 3 ugyan olyan és nem is egymás mellett,tehát true lenne,ott van a 4 db 4-es ami egymás melett van,ezért false az eredmény.
5 4 4 4 5 5 -> szintán false,mivel egymás mellett vannak a számok.
public static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int inNum = sc.nextInt();
int myArray [] = fillArray(inNum);
System.out.println(isContainDistinct(myArray));
}
public static int [] fillArray(int number){
int [] myArray = new int [number];
for(int i = 0; i < myArray.length; i++){
myArray[i] = sc.nextInt();
} return myArray;
}
public static boolean isContainDistinct(int[] arr) {
for (int i = 0; i < arr.length-2; i++) {
if (arr[i] != arr[i + 1] && arr[i] == arr[i + 2] && arr[i+2] != arr[i+3] && arr[i] == arr[i+4]) {
return true;
} if(arr[i] == arr[i+1] && arr[i] == arr[i+2]){
return false;
}
}
return false;
}
}
Úgy tűnik így működik.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!