maghico
06-05-2008, 14:17
Ciao a tutti sto svolgendo un esercizio e non riesco a fare un metodo, vi posto le due classi che servono per l'esercizio!
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 l'array...
/** Gli oggetti di questa classe sono triple, composte da tre interi.
*/
public class Tripla {
private int i;
private int j;
private int k;
// NON INTRODURRE NESSUN COSTRUTTORE!
// Si usa il costuttore di default.
public int getI() {
return i;
}
public int getJ() {
return j;
}
public int getK() {
return k;
}
public void setI(int i) {
this.i = i;
}
public void setJ(int j) {
this.j = j;
}
public void setK(int k) {
this.k = k;
}
/**Da completare il metodo toString che metta sotto forma di stringa i valori dell'oggetto.*/
public String toString(){
return (" " + i + " " + j + " " + k);
}
}
questa classe stampa la tripla...
/** 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 Tripla.
*/
import java.util.*;
import static java.lang.System.*;
public class Esame{
static Scanner tastiera = new Scanner(in);
public static void main(String [] args) {
// (1) Dichiarare un array di stringhe,chiamato mioarray, e riempirlo
// con stringhe a piacere
// usando il metodo readStringArray() di ArrayUtil.
String[] mioarray = ArrayUtil.readStringArray();
// (2) Richiamare opportunamente il metodo che avrete completato qui sotto
// e stamparne il risultato, stampando ANCHE l'array con l' opportuna
// println.
Tripla a = treMin(mioarray);
System.out.println("La lunghezza delle stringhe e' : " + a);
ArrayUtil.println(mioarray);
} // fine main
/** (3) Definire il metodo statico indicato qui sotto.
*/
/** Il metodo treMin prende come argomento un array di stringhe,
e restituisce un oggetto Tripla che contiene le tre lunghezze delle stringhe più corte.
Ad es. con: {a,abcd,bc,ss,sssss,irtsd,uuuu}
si ottiene: <1,2,2>.
Se ci sono meno di tre elementi nell'array si mettano degli 0
nei posti opportuni,
ad es. con: {aa,s}
si ottiene: <2,1,0>.
Per svolgere l'esercizio,si usino tre variabili min1, min2, min3 per memorizzare rispettivamente
la lunghezza della stringa più corta, quella della seconda stringa più corta ecc. tra le stringhe esaminate fino a quel momento.
*/
public static Tripla treMin(String [] a) {
int min1 = 0;
int min2 = 0;
int min3 = 0;
int l;
for(int i = 0; i < a.length; i++){
l = a[i].length();
if(l < min1){
min3 = min2;
min2 = min1;
min1 = l;
}
else if(l < min2){
min3 = min2;
min2 = l;
}
else if(l < min3){
min3 = l;
}
}
Tripla miaTripla = new Tripla();
miaTripla.setI(min1);
miaTripla.setJ(min2);
miaTripla.setK(min3);
String tmp = miaTripla.toString();
System.out.println(tmp);
return miaTripla;
}
}
infine questa è la classe dove c'è il metodo treMin(String [] a) che non riesco a fare, ovvero mi stampa a video soltanto i tre valori 0 e non la lunghezza delle stringhe!chiedo il vostro aiuto!grazie mille
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 l'array...
/** Gli oggetti di questa classe sono triple, composte da tre interi.
*/
public class Tripla {
private int i;
private int j;
private int k;
// NON INTRODURRE NESSUN COSTRUTTORE!
// Si usa il costuttore di default.
public int getI() {
return i;
}
public int getJ() {
return j;
}
public int getK() {
return k;
}
public void setI(int i) {
this.i = i;
}
public void setJ(int j) {
this.j = j;
}
public void setK(int k) {
this.k = k;
}
/**Da completare il metodo toString che metta sotto forma di stringa i valori dell'oggetto.*/
public String toString(){
return (" " + i + " " + j + " " + k);
}
}
questa classe stampa la tripla...
/** 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 Tripla.
*/
import java.util.*;
import static java.lang.System.*;
public class Esame{
static Scanner tastiera = new Scanner(in);
public static void main(String [] args) {
// (1) Dichiarare un array di stringhe,chiamato mioarray, e riempirlo
// con stringhe a piacere
// usando il metodo readStringArray() di ArrayUtil.
String[] mioarray = ArrayUtil.readStringArray();
// (2) Richiamare opportunamente il metodo che avrete completato qui sotto
// e stamparne il risultato, stampando ANCHE l'array con l' opportuna
// println.
Tripla a = treMin(mioarray);
System.out.println("La lunghezza delle stringhe e' : " + a);
ArrayUtil.println(mioarray);
} // fine main
/** (3) Definire il metodo statico indicato qui sotto.
*/
/** Il metodo treMin prende come argomento un array di stringhe,
e restituisce un oggetto Tripla che contiene le tre lunghezze delle stringhe più corte.
Ad es. con: {a,abcd,bc,ss,sssss,irtsd,uuuu}
si ottiene: <1,2,2>.
Se ci sono meno di tre elementi nell'array si mettano degli 0
nei posti opportuni,
ad es. con: {aa,s}
si ottiene: <2,1,0>.
Per svolgere l'esercizio,si usino tre variabili min1, min2, min3 per memorizzare rispettivamente
la lunghezza della stringa più corta, quella della seconda stringa più corta ecc. tra le stringhe esaminate fino a quel momento.
*/
public static Tripla treMin(String [] a) {
int min1 = 0;
int min2 = 0;
int min3 = 0;
int l;
for(int i = 0; i < a.length; i++){
l = a[i].length();
if(l < min1){
min3 = min2;
min2 = min1;
min1 = l;
}
else if(l < min2){
min3 = min2;
min2 = l;
}
else if(l < min3){
min3 = l;
}
}
Tripla miaTripla = new Tripla();
miaTripla.setI(min1);
miaTripla.setJ(min2);
miaTripla.setK(min3);
String tmp = miaTripla.toString();
System.out.println(tmp);
return miaTripla;
}
}
infine questa è la classe dove c'è il metodo treMin(String [] a) che non riesco a fare, ovvero mi stampa a video soltanto i tre valori 0 e non la lunghezza delle stringhe!chiedo il vostro aiuto!grazie mille