Számok összehasonlítása Java nyelvben?
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(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[] array) {
int counter = 0;
for(int i = 0; i < array.length; i++){
if(array.length < 3) System.exit(0);
for (int j = i+1; j < array.length; j++){
if (array[i] == array [j+2]) counter ++;
}
return true;
}return true;
}
}
Értsd már meg, hogy már eleve túlméssz a tömb méreten az index-el.
Ha tíz elemű a tömb akkor ciklus 9-ig fut, de te 9 + 2 a 11. elemre hivatkozol → array [j+2]...
for (int j = i+1; j < array.length; j++){
if (array[i] == array [j+2]) counter ++;
A Java-t utálom mint ördög a tömjénfüstöt, Pascal-ban meg tudom mutatni.
var tomb : array[0..10] of Byte = (1,1,1,2,2,3,4,5,6,7,8);
function van_e_harom : Boolean;
var i, j, n : Byte;
begin
Result := False;
for i := 0 to 9 do
begin
n := 1;
for j := i + 1 to 10 do
if tomb[i] = tomb[j] then Inc(n);
if n > 2 then Result := True;
end;
end;
Ennek ha True az értéke lehet vizsgálni, hogy egymás mellett vannak-e az egyforma számok.
Mint látod a külső ciklus a tömb mérete - 1 ig megy, a belső az pedig a a végéig, de a külső ciklusváltozó + 1 - től indul. A Result, visszatérési érték alapból hamis, de ha talál három egyformát akkor igaz lesz.
int counter = 0;
for(int i = 0; i < array.length-1; i++){
for (int j = i+1; j < array.length; j++){
if (array[i] == array [j]) counter ++;
}
return true;
}return true;
}
}
Valahogy így gondoltad?
Hihetetlen :D :D :D
Egyébként szerintem már 5 kérdéssel korábban megírták a megoldást...
#include <cstdlib>
#include <iostream>
using namespace std;
int tomb[10] = {1,1,1,2,2,3,4,5,6,7};
int van_e_harom();
int main()
{
if (van_e_harom()) cout << "Van harom egyforma\n";
getchar();
return 0;
}
int van_e_harom(){
int van_e = 0;
int n = 1;
for (int i = 0; i < 9; i++){
n = 1;
for (int j = i + 1; j < 10; j++)
if (tomb[i] == tomb[j]) n++;
if ( n > 2) van_e = 1;
}
return van_e;
}
Így már megérted ?
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!