Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-05-2008, 14:25   #1
maghico
Junior Member
 
Iscritto dal: Sep 2007
Messaggi: 19
[Java]Problema metodo

Ciao a tutti, volevo chiedere un aiuto su un metodo in java, purtroppo il codice che ho scritto io mi funziona solo in parte...vi posto prima le classi che servono per il metodo:

Codice:
import java.util.Scanner;

public class ArrayUtil{

/* completare il corpo del metodo statico read per la lettura di array di interi che:

	1- chieda all'utente la lunghezza dell'array da creare e forzi l'utente a inserire un intero;
	2- crei un array della lunghezza giusta;
	3- chieda all'utente i singoli elementi dell'array e li inserisca nell'array;
	4- restituisca l'indirizzo dell'array creato.

QUESTO METODO E' STATO VISTO A LEZIONE. POTRA' ESSERE USATO IN FUTURO OGNI VOLTA CHE SI
VOGLIANO LEGGERE ARRAY DI INTERI*/
static Scanner input = new Scanner(System.in);
public static int [] read(){

	int [] nuovoarray;
	System.out.println("Di che lunghezza vuoi l'array? ");
	while(!input.hasNextInt()){
		input.next();
		System.out.println("Immetti un intero.");
		}
	int n = input.nextInt();
	nuovoarray = new int[n];
	for(int i = 0; i < n; i++){
		System.out.print("Immetti l'elemento n "+i+":");
		nuovoarray[i] = input.nextInt();
		}

	return nuovoarray;
}


/* Scrivere il corpo del metodo statico println per stampare i valori di un array
di interi a.

IL METODO E' STATO VISTO A LEZIONE. POTRA' ESSERE USATO IN FUTURO OGNI VOLTA CHE SI
VOGLIANO STAMPARE ARRAY DI INTERI. */

public static void println(int [] a){

	System.out.println("l' array e' : ");
	int n = a.length;
	for(int i = 0; i < n; i++){
		System.out.print(a[i] + "");
		}
		System.out.println();
}


/* Analogamente a quanto appena fatto, si definiscano i metodi:

	public static double[] readDoubleArray()
	public static void println(double[] a)

per leggere e scrivere array di doubles;

Inoltre si definiscano:

	public static String[] readStringArray()
	public static void println(String[] a)

per leggere e scrivere array di stringhe;

ANCHE QUESTI METODI POTRANNO ESSERE USATI NEGLI ESERCIZI FUTURI */

public static double[] readDoubleArray(){

	double [] nuovoarray1;
	System.out.println("Di che lunghezza vuoi l'array? ");
	while(!input.hasNextInt()){
		input.next();
		System.out.println("Immetti un intero.");
		}
		int a = input.nextInt();
		nuovoarray1 = new double[a];
		for(int i = 0; i < a; i++){
			System.out.print("Immetti l'elemento n "+i+":");
			nuovoarray1[i] = input.nextInt();
			}
			return nuovoarray1;
}


public static void println(double[] a){

	System.out.println("l'array e' : ");
	double n = a.length;
	for(int i = 0; i < n; i++){
		System.out.println(a[i] + "");
		}
		System.out.println();
		}



public static String[] readStringArray(){

	String [] nuovoarray2;
	System.out.println("Di che lunghezza vuoi l'array? ");
	while(!input.hasNextInt()){
		input.next();
		System.out.println("Immetti un intero.");
		}
		int a = input.nextInt();
		nuovoarray2 = new String[a];
		for(int i = 0; i < a; i++){
			System.out.println("Immetti l'elemento n" + i + " : ");
			nuovoarray2[i] = input.next();
			}
			return nuovoarray2;
		}


public static void println(String[] a){

	System.out.println("l'array e' : ");
	int n = a.length;
	for(int i = 0; i < n; i++){
		System.out.println(a[i] + "");
		}
		System.out.println();
		}


}
questa classe serve per gli array(lettura e stampa)

Codice:
/** Gli oggetti di questa classe sono coppie, composte di un intero e una stringa.
 */

public class Coppia {

  private int i;
  private String s;



  // NON INTRODURRE NESSUN COSTRUTTORE!
  // Si usa il costuttore di default.


 public int getI() {

  return i;
 }

 public String getS() {

  return s;
 }


 public void setI(int i) {

  this.i = i;
 }

 public void setS(String s) {

  this.s = s;
 }


 /**Da completare il metodo toString che metta sotto forma di stringa i valori dell'oggetto.*/
 public String toString(){
 	
 	return "Colore : " + s + " Numero volte : " + i;
 	
 	
 	}


}
questa classe serve per le coppie.

Codice:
/** Questa classe usa i metodi readStringArray() e
    println(String[] a) di ArrayUtil.
    Controllare la corrispondenza dei nomi di questi metodi coi nomi
    dei metodi della VOSTRA classe ArrayUtil.

    Usa inoltre la classe Coppia.
 */

import java.util.*;
import static java.lang.System.*;

public class EseDic1{

 public static void main(String [] args) {

  Scanner tastiera = new Scanner(in);


 // (1) Dichiarare un array di stringhe,chiamato arraystringhe, e riempirlo
 // con parole a piacere
 // usando il metodo readStringArray() di ArrayUtil.
 String[] arraystringhe = ArrayUtil.readStringArray();


 // (2) Richiamare opportunamente il metodo che avrete completato qui sotto
 // e stamparne il risultato, stampando ANCHE  l'array con l' opportuna
 // println.
 Coppia a = parolaPiuFrequente(arraystringhe);
 System.out.println(a);
 ArrayUtil.println(arraystringhe);



 } // fine main


 /** (3) Definire il  metodo statico indicato qui sotto.
  */


/** Il metodo parolaPiuFrequente() prende come argomento un array di stringhe,
    conta le occorrenze delle stringhe contenute nell'array (cioe` conta il
    numero di volte in cui una stringa compare nell'array) e restituisce una coppia
    formata dalla stringa che ha il maggior numero di occorrenze *contigue* e dal
    numero di occorrenze della stringa stessa.
    Se tutte le stringhe hanno lo stesso numero di occorrenze il metodo restituisce
    la coppia <"", 0>.
    Ad esempio, dato l'array <"bianco", "blu", "blu", "rosso", "rosso", "rosso", "verde">,
    il metodo restituira' la coppia <"rosso", 3>.
    -Suggerimento-
     Dovete utilizzare quattro variabili, la prime due servono rispettivamente per memorizzare
     la stringa correntemente esaminata e per contare via via le sue occorrenze, le seconde due
     servono rispettivamente per memorizzare la stringa che occorre di piu` fino a quel momento e
     il numero di volte in cui occorre. Alla fine, nelle seconde due avremo il risultato che va
     messo dentro la Coppia risultato.
   */
 public static Coppia parolaPiuFrequente(String [] r) {
 	String a = "";
 	String b = "";
 	int c = 0;
 	int d = 0;
 	
 	for(int i = 0; i < r.length - 1; i++){
 		a = r[i];
 		if(a.equals(r[i]) && a.equals(r[i+1])){
 			c++;
 			b = a;
 			d = c;
		}
	}
		
		Coppia miaCoppia = new Coppia();
		miaCoppia.setS(b);
		miaCoppia.setI(d);
		return miaCoppia;
	}
}
infine questa è l'ultima classe dove vi è il metodo parolaPiuFrequente(String[] r), di cui riesco a fare solo in parte ciò che mi chiede, es. inserisco(rosso, rosso, rosso, blu, giallo, rosso) mi dice che la parola più frequente è il rosso però come numero di occorrenze mi stampa solo 2 invece di 4!
e poi quando inserisco(rosso, rosso, rosso) mi stampa sempre il colore rosso e numero di volte 2, al posto di "" e 0;cosa posso fare, è giusto il codice da me inserito?grazie mille a tutti
maghico è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2008, 13:02   #2
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Da quanto ho capito ti serve un metodo che preso in input un array di stringhe ti ritorna la stringa ripetuta più volte in quell'array.
Dai un occhiata a questi metodi che fanno quello che ti serve in modi differenti.
Codice:
public static String maxOccurrency(String[] s) {
		String parola = "";
		int maxOccurrency = 0;
		int count = 0;
		List<String> list = Arrays.asList(s);
		for(String item : list) {
			count = Collections.frequency(list, item);
			parola = count > maxOccurrency ? item : parola;
			maxOccurrency = count > maxOccurrency ? count : maxOccurrency;
		}
		return parola;
	}
	
	public static String maxOccurrencyRegEx(String[] s) {
		String parola = "";
		String trasformedArray = "";
		for(String item : s)
			trasformedArray += item;
		Pattern pattern;
		Matcher matcher;
		int count = 0;
		int maxOccurrency = 0;
		for(String item : s) {
			pattern = Pattern.compile(item);
			matcher = pattern.matcher(trasformedArray);
			while(matcher.find())
				count++;
			parola = count > maxOccurrency ? item : parola;
			maxOccurrency = count > maxOccurrency ? count : maxOccurrency;			
			count = 0;
		}
		return parola;
	}
Ciauz
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Addio ai matrimoni con l'intelligenza ar...
Le sonde spaziali ESA ExoMars e Mars Exp...
Roscosmos: static fire per i propulsori ...
Alcune partite NBA saranno trasmesse in ...
Intel Core 13000 e 14000 aumentano uffic...
Gemini sta per arrivare in Google Maps: ...
2 minuti per vedere le 27 offerte imperd...
Ray-Ban Meta Display: tecnologia sorpren...
Un mini PC a prezzo stracciato, non cerc...
Al via i coupon nascosti di ottobre: qua...
Ferrari Elettrica si aggiorna solo in of...
Doppio sconto sugli smartphone top Xiaom...
Samsung è sempre più prota...
ChatGPT ha pregiudizi politici? Ecco cos...
Un solo iPhone rubato ha portato alla sc...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:40.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v