Java...
Chi mi aiuta a creare un programma in Java che risolva l'esercizio sotto???
Scrivere un programma che definisca la classe
Rettangolo con due attributi
base ed altezza di tipo intero.
------
Definire due costruttori:
- senza parametri: assegna 2 a base e 1 ad altezza
- con 2 parametri: assegna i valori a base e ad altezza
Il costruttore senza parametri deve richiamare
quello con due parametri
------
Definire un metodo pubblico che calcoli l'altezza
del rettangolo.
------
Scrivere un main che instanzi due oggetti di tipo
Rettangolo: il primo costruito con il costruttore
senza parametri ed il secondo costruito con quello
a due parametri.
Stampare l'area dei due rettangoli
Scrivere un programma che definisca la classe
Rettangolo con due attributi
base ed altezza di tipo intero.
------
Definire due costruttori:
- senza parametri: assegna 2 a base e 1 ad altezza
- con 2 parametri: assegna i valori a base e ad altezza
Il costruttore senza parametri deve richiamare
quello con due parametri
------
Definire un metodo pubblico che calcoli l'altezza
del rettangolo.
------
Scrivere un main che instanzi due oggetti di tipo
Rettangolo: il primo costruito con il costruttore
senza parametri ed il secondo costruito con quello
a due parametri.
Stampare l'area dei due rettangoli
Risposte
In quali punti trovi difficoltà? Posta quello che hai provato a scrivere e vediamo cosa non va...
Saluti, Ermanno.
Saluti, Ermanno.
Ho fatto così... E spero che sia giusto...
//classe Rettangolo
public class Rettangolo {
private int base;
private int altezza;
public Rettangolo(int base, int altezza) {
this.base = base;
this.altezza = altezza;
}
public Rettangolo() {
Rettangolo r = new Rettangolo(base, altezza);
base = 2;
altezza = 1;
}
public int area(Rettangolo r){
return r.base*r.altezza;
}
}
//main
public class ProvaRettangolo {
public static void main(String[] args) {
Rettangolo r1 = new Rettangolo();
Rettangolo r2 = new Rettangolo(5,8);
System.out.println("L'area del rettangolo costruito senza parametri è : " + r1.area(r1));
System.out.println("L'area del rettangolo costruito con i due parametri è : " + r2.area(r2));
}
}
IL PROBLEMA E' CHE ORA DOVREI RISCIRE A MODIFICARE IL PROGRAMMA NEL SEGUENTE MODO:
in modo che riceva i parametri del secondo rettangolo da riga di comando
Aggiungere poi al main la creazione di un terzo rettangolo ricevendo i parametri da tastiera a tempo di esecuzione.
GRAZIE
//classe Rettangolo
public class Rettangolo {
private int base;
private int altezza;
public Rettangolo(int base, int altezza) {
this.base = base;
this.altezza = altezza;
}
public Rettangolo() {
Rettangolo r = new Rettangolo(base, altezza);
base = 2;
altezza = 1;
}
public int area(Rettangolo r){
return r.base*r.altezza;
}
}
//main
public class ProvaRettangolo {
public static void main(String[] args) {
Rettangolo r1 = new Rettangolo();
Rettangolo r2 = new Rettangolo(5,8);
System.out.println("L'area del rettangolo costruito senza parametri è : " + r1.area(r1));
System.out.println("L'area del rettangolo costruito con i due parametri è : " + r2.area(r2));
}
}
IL PROBLEMA E' CHE ORA DOVREI RISCIRE A MODIFICARE IL PROGRAMMA NEL SEGUENTE MODO:
in modo che riceva i parametri del secondo rettangolo da riga di comando
Aggiungere poi al main la creazione di un terzo rettangolo ricevendo i parametri da tastiera a tempo di esecuzione.
GRAZIE
Nel main potresti fare così:
//Crei un flusso di dati provenienti da tastiera e li memorizzi come String nel buffer
//Praticamente il pezzo di codice di sotto ti permette di scrivere da tastiera.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String base = br.readLine();
String altezza = br.readLine();
Rettangolo r = new Rettangolo(base,altezza);
System.out.print("L'area del rettangolo è "+r.area(r)+"\n");
Nel costruttore come parametri dovresti mettere 2 String;
Esempio
public Rettangolo(String base, String altezza) {
Rettangolo r = new Rettangolo(base, altezza);
base = 2;
altezza = 1;
}
Prova a fare così e vedi se funziona, altrimenti proverò a farlo anche io e poi metterò il codice nel sito.
pigreco
//Crei un flusso di dati provenienti da tastiera e li memorizzi come String nel buffer
//Praticamente il pezzo di codice di sotto ti permette di scrivere da tastiera.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String base = br.readLine();
String altezza = br.readLine();
Rettangolo r = new Rettangolo(base,altezza);
System.out.print("L'area del rettangolo è "+r.area(r)+"\n");
Nel costruttore come parametri dovresti mettere 2 String;
Esempio
public Rettangolo(String base, String altezza) {
Rettangolo r = new Rettangolo(base, altezza);
base = 2;
altezza = 1;
}
Prova a fare così e vedi se funziona, altrimenti proverò a farlo anche io e poi metterò il codice nel sito.
pigreco
Forse sarebbe meglio farlo così il costruttore
public Rettangolo(String base, String altezza) {
Rettangolo r = new Rettangolo(base, altezza);
}
public Rettangolo(String base, String altezza) {
Rettangolo r = new Rettangolo(base, altezza);
}
Grazie...
"maalla":
Ho fatto così... E spero che sia giusto...
//classe Rettangolo
public class Rettangolo {
private int base;
private int altezza;
public Rettangolo(int base, int altezza) {
this.base = base;
this.altezza = altezza;
}
public Rettangolo() {
Rettangolo r = new Rettangolo(base, altezza);
base = 2;
altezza = 1;
}
public int area(Rettangolo r){
return r.base*r.altezza;
}
}
//main
public class ProvaRettangolo {
public static void main(String[] args) {
Rettangolo r1 = new Rettangolo();
Rettangolo r2 = new Rettangolo(5,8);
System.out.println("L'area del rettangolo costruito senza parametri è : " + r1.area(r1));
System.out.println("L'area del rettangolo costruito con i due parametri è : " + r2.area(r2));
}
}
IL PROBLEMA E' CHE ORA DOVREI RISCIRE A MODIFICARE IL PROGRAMMA NEL SEGUENTE MODO:
in modo che riceva i parametri del secondo rettangolo da riga di comando
Aggiungere poi al main la creazione di un terzo rettangolo ricevendo i parametri da tastiera a tempo di esecuzione.
GRAZIE
Diciamo che la scelta del tipo int per base e altezza non sia proprio ottimale...meglio float o double. Poi nel costruttore predefinito non c'è bisogno dell'istruzione "Rettangolo r = new Rettangolo(base, altezza);": infatti così la variabile r risulta mai utilizzata. Non c'è bisogno di istanziare un nuovo oggetto di tipo Rettangolo!! Il costruttore predefinito imposta automaticamente tutti i campi istanza con il valore predefinito corrispondente. Infine non c'è bisogno di modificare il costruttore, ma basterà invocarlo in questo modo: "Rettangolo r = new Rettangolo(Float.parseFloat(base),Float.parseFloat(altezza));". Se cambi il costruttore devi cambiare anche i tipi dei campi istanza e il costruttore predefinito...troppa fatica!!!

Saluti, Ermanno.