RISOLTO Unire pari di due array java

891

Nuovo Utente
77
7
Ciao a tutti, mi aiutate a capire come si crea un array contenente solo i numeri pari di due array noti?
Codice:
import java.util.*;

public class ArrayPari {
	public static void main(String[] args)  {
		int[] a = new int[2];
		int[] b = new int[2];
		Riempi(a);
		Riempi(b);
		int pari = CalcolaNumPari(a)+CalcolaNumPari(b);
		int[] c = new int[pari];
		System.out.println("Il numero di elementi con valore pari è: "+pari);
		System.out.println(c);
		
		}
	
	static void Riempi(int[]x) {
		Scanner s = new Scanner(System.in);
		for(int i = 0;i<x.length;i++)
			x[i] = s.nextInt();
	}
	static int CalcolaNumPari(int[] x) {
		int cont = 0;
		for(int i = 0;i<x.length;i++){
			if(x[i]%2==0)
				cont++;
		}
		return cont;
	}
static void UnisciPari(int[]a, int[]b, int[] c) {
		int contatore = CalcolaNumPari(a);	
		int p = 0;
		for(int i = 0;i<a.length;i++){
			if(a[i]%2==0){
				c[p] = a[i];
				p++;
			}
		}
		for(int i = 0;i<b.length;i++){
			if(b[i]%2==0){
				c[contatore] = b[i];
				contatore++;
			}
		}
		
	}
}
Il metodo unisci pari è sbagliato ma non capisco dove
 
Ultima modifica da un moderatore:

TheJudge

Utente Attivo
335
84
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
HDD
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
GPU
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
PSU
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
OS
Windows 10 Pro
Ciao a tutti, mi aiutate a capire come si crea un array contenente solo i numeri pari di due array noti?
import java.util.*;


public class ArrayPari {
public static void main(String[] args) {
int[] a = new int[2];
int[] b = new int[2];
Riempi(a);
Riempi(b);
int pari = CalcolaNumPari(a)+CalcolaNumPari(b);
int[] c = new int[pari];
System.out.println("Il numero di elementi con valore pari è: "+pari);
System.out.println(c);

}

static void Riempi(int[]x) {
Scanner s = new Scanner(System.in);
for(int i = 0;i<x.length;i++)
x = s.nextInt();
}
static int CalcolaNumPari(int[] x) {
int cont = 0;
for(int i = 0;i<x.length;i++){
if(x%2==0)
cont++;
}
return cont;
}
static void UnisciPari(int[]a, int[]b, int[] c) {
int contatore = CalcolaNumPari(a);
int p = 0;
for(int i = 0;i<a.length;i++){
if(a%2==0){
c[p] = a;
p++;
}
}
for(int i = 0;i<b.length;i++){
if(b%2==0){
c[contatore] = b;
contatore++;
}
}

}
}
Il metodo unisci pari è sbagliato ma non capisco dove


Primo: il metodo UnisciPari() non lo chiami mai, ma magari è una dimenticanza nel riportare qui il programma da te scritto
Secondo: nel metodo UnisciPari() nel secondo ciclo for(), perchè riempi dalla posizione contatore e non continui ad utilizzare p? L'errore credo propio sia questo.

Spero di esserti stato utile.
 

891

Nuovo Utente
77
7
Codice:
static void UnisciPari(int[]a, int[]b, int[] c) {    
        int p = 0;
        for(int i = 0;i<a.length;i++){
            if(a[i]%2==0){
                c[p] = a[i];
                p++;
            }
        }
        for(int i = 0;i<b.length;i++){
            if(b[i]%2==0){
                c[p] = b[i];
                p++;
            }
        }
Ho corretto come mi hai consigliato e richiamato il metodo prima dell'ultimo comando di stampa nel main, però non riesco a riempire sto benedetto array. Tu conosci un metodo alternativo che ha lo stesso scopo?
 

TheJudge

Utente Attivo
335
84
CPU
i5-8600k
Dissipatore
Cooler Master TX3 EVO
Scheda Madre
MSI Z370 SLI PLUS
HDD
SAMSUNG 840 Pro 250GB + SSD Sandisk 250GB
RAM
Hiperx 2x8GB DDR4 @2666Hz
GPU
Asus Strix 1070TI
Monitor
1 Asus 24" fullHD + BENQ 27" fullHD
PSU
EVGA SuperNova 850W 80+ gold
Case
NZXT S340
OS
Windows 10 Pro
Codice:
static void UnisciPari(int[]a, int[]b, int[] c) {    
        int p = 0;
        for(int i = 0;i<a.length;i++){
            if(a[i]%2==0){
                c[p] = a[i];
                p++;
            }
        }
        for(int i = 0;i<b.length;i++){
            if(b[i]%2==0){
                c[p] = b[i];
                p++;
            }
        }
Ho corretto come mi hai consigliato e richiamato il metodo prima dell'ultimo comando di stampa nel main, però non riesco a riempire sto benedetto array. Tu conosci un metodo alternativo che ha lo stesso scopo?

Se non ricordo male se fai System.out.println(c); stampi l'indirizzo del puntatore dell'array. Prova a stampare posizione per posizione o un metodo più veloce è utilizzare i metodi della classe Arrays. Se non ricordo male System.out.println(Arrays.toString(c));
 

891

Nuovo Utente
77
7
Grazie mille!!!! Ho risolto in 2 modi, il primo è quello che dici tu tramite Arrays.toString() che non conoscevo;

Codice:
System.out.println(Arrays.toString(c));



il secondo è che sbagliavo a dare l'ordine di stampa, mi ero dimenticato il ciclo for per stampare tutto l'array c.
Codice:
        for(int i = 0;i<c.length;i++)
            System.out.print(" "+c[i]);
 
  • Mi piace
Reazioni: Mursey

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili