Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-11-2014, 16:43   #1
uscrocc
Member
 
Iscritto dal: Feb 2014
Messaggi: 60
[JAVA] vettore e acquisizione

Ciao raga l'esercizio chiede: Una scuola è composta da N classi. Per ogni classe viene inserito da tastiera il numero di studenti. calcolare quanti studenti frequentano la scuola e la media di tutto l'istituto.


Bhe, io ho cercato di farlo ma non capisco perchè mi da questo errore:
Codice:
Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	The local variable nclassi may not have been initialized
	The local variable nclassi may not have been initialized
	The local variable somma may not have been initialized
	The local variable somma may not have been initialized
	The local variable nclassi may not have been initialized
	The local variable somma may not have been initialized

	at numero22.numero22.main(numero22.java:27)
Questo l'esercizio:

Codice:
package numero22;
import java.io.*;

public class numero22 {
	public static void main (String[] args){
		
		InputStreamReader input = new InputStreamReader (System.in);
		BufferedReader tastiera = new BufferedReader (input);
		
		int classe[]=new int [200];
		
		String snclassi;
		
		int nclassi;
		
		try{
			
			System.out.println("Digitare quante classe sono presenti nell'istituto (max 200): " );
			
			snclassi=tastiera.readLine();
			nclassi=Integer.valueOf(snclassi).intValue();
		}
		catch (Exception e){}
		
		String nstud;
				
		for (int i=0;i<nclassi;i++){
			try{
				
				System.out.println("Digitare quanti alunni sono presenti nella classe "+ i+1 + " :" );
				
				nstud=tastiera.readLine();
				classe[i]=Integer.valueOf(nstud).intValue();
			}
			catch (Exception e){}
			
		}
		
		int somma;
		
		for(int i=0;i<nclassi;i++){
			somma+=classe[i];
		}
		int media= somma/nclassi;
		
		System.out.println("la somma di studenti in totale e'" +somma);
		System.out.println("la media di studenti e'" +media);
		
	}

}
uscrocc è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2014, 22:52   #2
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Java ti sta avvertendo che in caso di eccezione potresti non aver assegnato nessun valore alle variabili, o almeno ad una di loro.

Nonostante questo, hai deciso di proseguire l'esecuzione come se niente fosse. in caso di eccezione, quindi, potresti incorrere in problemi seri. Questo e' il significato di quell'errore.

Invece di Integer.valueOf() potresti usare l'Integer.parseInt(), cosi' eviti un boxing/unboxing non richiesto. Ricorda che solleva un'eccezione Runtime di tipo NumberFormatException; pertanto potresti anche decidere di non catturarla, sapendo che se l'utente inserisce dati errati il programma terminera' con un errore. Tutto sommato e' un programma di esempio e potrebbe anche essere accettabile.

Infine, la readLine() solleva una IOException: sarebbe meglio utilizzare sempre il tipo piu' specifico di eccezione, soprattutto evitare di fare il catch(Exception) poiche' potrebbe produrre situazioni molto spiacevoli (naturalmente in programmi piu' complessi, ma in sostanza non cambia molto).

Netbeans ti segnala di non usare catch(Exception); ed immagino che Eclipse faccia lo stesso
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 15-11-2014, 22:07   #3
uscrocc
Member
 
Iscritto dal: Feb 2014
Messaggi: 60
ok grazie ho risolto con =0
uscrocc è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2014, 15:56   #4
uscrocc
Member
 
Iscritto dal: Feb 2014
Messaggi: 60
L'esercizio chiede: creare la classe rettangolo con gli attributi base e altezza e i metodi perimetro e area. un'altra classe con attributi raggio e metodi perimetro e area. una classe esercizio1 che ha solo il metodo main. creare due oggetti di tipo rettangolo con i lati avcquisiti da tastiera e due oggetti di tipo cerchio. stampare area e perimetro e l'oggetto con area maggiore e perimetro minore.

Raga ma cosa c'è di sbagliato secondo voi?

Codice:
import java.io.*;

public class cerchio {
	private double raggio;


public cerchio (double raggio){
	setRaggio(raggio);
}

public void setRaggio (double raggio) { this.raggio=raggio; }
public double perimetro (){
	double perimetro3= (raggio*6,28);
	return perimetro3;
}
public double area (){
	double area3= (raggio*raggio)*3,14;
	return area3;
}

public class rettangolo {
	private double base;
	private double h;


public rettangolo (double base, double h){
	setBase(base);
	setH(h);
}

public void setBase (double base) { this.base=base; }
public void setH (double h) { this.h=h; }
public double perimetro (){
	double perimetro2= (base+h)*2;
	return perimetro2;
}
public double area (){
	double area2= (base*h);
	return area2;
}


public static void main (String[] args){
	
	InputStreamReader input = new InputStreamReader (System.in);
	BufferedReader tastiera = new BufferedReader (input);
	
	String sbase;
	String sh;
	
	int base=0;
	int h=0;

	 try{
		
		System.out.println("Digitare la base del rettangolo: " );
		
		sbase=tastiera.readLine();
		base=Integer.valueOf(sbase).intValue();
		
        System.out.println("Digitare la h del rettangolo: " );
		
		sh=tastiera.readLine();
		h=Integer.valueOf(sh).intValue();
		
        System.out.println("Digitare il raggio del cerchio: " );
		
		sraggio=tastiera.readLine();
		raggio=Integer.valueOf(sraggio).intValue();
		
	    }
	 catch (Exception e){}
	 
	 rettangolo rett= new rettangolo (base,h); 
	 
	 
	 System.out.println("il perimetro del rettangolo e': "+rett.perimetro());
	 System.out.println("la base del rettangolo e': " + rett.area() );
	 
	 String sraggio:
			
	 int raggio=0;
	 
	 try{
		 System.out.println("digitare il raggio del cerchio: ");
		 
		 sraggio=tastiera.readLine();
		 raggio=Integer.valueOf(sraggio).intValue();
	 }
	 catch (Exception e){}
	 
	 cerchio cerc= new cerchio (raggio);
	 
	 System.out.println("l'area del cerchio e': "+cerc.area());
	 System.out.println("il perimetro (o circonferenza) del cerchio e': "+cerc.perimetro());
	 
	 if(rett.area>cerc.area) System.out.println("L'area piu' grande e' del rettangolo. ("+rett.area+")");
	 else System.out.println("L'area piu' grande e' del cerchio. ("+cerc.area+")");
	 
	 if(rett.perimetro<cerc.perimetro) System.out.println("Il perimetro minore e' del rettangolo. ("+rett.perimetro+")");
	 else System.out.println("Il perimetro minore e' del rettangolo. ("+cerc.perimetro+")");
}
	 
}
Non mi fa propio compilare
uscrocc è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2014, 16:19   #5
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Comincia a correggere un po' di errori di sintassi.
Per esempio, la virgola decimale e' in realta' un punto. Quindi non devi scrivere i numeri decimali come 6,28 o 3,14 ma come 6.28 e 3.14

Inoltre non devi scrivere
String sraggio:
(i due punti sono errati, occorre il punto e virgola)

Altro suggerimento: Java ha uno standard ampiamente utilizzato ed apprezzato per quanto riguarda i nomi delle variabili e delle classi.
La classe dovrebbe cominciare con una maiuscola, quindi - anche se non obbligatorio - sarebbe meglio cambiare cerchio con Cerchio. Tutti gli sviluppatori lo fanno, e diventando un'abitudine di tutti, semplifichi il lavoro di lettura/modifica/manutenzione
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 18-11-2014, 12:41   #6
uscrocc
Member
 
Iscritto dal: Feb 2014
Messaggi: 60
Quote:
Originariamente inviato da sottovento Guarda i messaggi
Comincia a correggere un po' di errori di sintassi.
Per esempio, la virgola decimale e' in realta' un punto. Quindi non devi scrivere i numeri decimali come 6,28 o 3,14 ma come 6.28 e 3.14

Inoltre non devi scrivere
String sraggio:
(i due punti sono errati, occorre il punto e virgola)

Altro suggerimento: Java ha uno standard ampiamente utilizzato ed apprezzato per quanto riguarda i nomi delle variabili e delle classi.
La classe dovrebbe cominciare con una maiuscola, quindi - anche se non obbligatorio - sarebbe meglio cambiare cerchio con Cerchio. Tutti gli sviluppatori lo fanno, e diventando un'abitudine di tutti, semplifichi il lavoro di lettura/modifica/manutenzione
Si grazie per avermelo detto, sono errori occasionali che dopo 5 minuti ho corretto e che mi sono dimenticato di apportale le modifiche qui nel topic. comunque ho fatto due classi: uno rettangolo.java e l'altro cerchio.java.

RETTANGOLO.JAVA questo
Codice:
package geometria;
public class rettangolo {
	private double base;
	private double h;


public rettangolo (double base, double h){
	setBase(base);
	setH(h);
}

public void setBase (double base) { this.base=base; }
public void setH (double h) { this.h=h; }
public double perimetro (){
	double perimetro2= (base+h)*2;
	return perimetro2;
}
public double area (){
	double area2= (base*h);
	return area2;
}
}
CERCHIO.JAVA questo
Codice:
package geometria;
public class cerchio {
	private double raggio;


public cerchio (double raggio){
	setRaggio(raggio);
}

public void setRaggio (double raggio) { this.raggio=raggio; }
public double perimetro (){
	double perimetro3= (raggio*6.28);
	return perimetro3;
}
public double area (){
	double area3= (raggio*raggio)*3.14;
	return area3;
}
}
e questo è la classe ESERCIZIO1.JAVA che contiene il main
Codice:
import java.io.*;
package geometria;


public class esercizio1 {
public static void main (String[] args){
	
	InputStreamReader input = new InputStreamReader (System.in);
	BufferedReader tastiera = new BufferedReader (input);
	
	String sbase1;
	String sh1;
	
	int base1=0;
	int h1=0;
	

	 try{
		
		System.out.println("Digitare la base del primo rettangolo: " );
		
		sbase1=tastiera.readLine();
		base1=Integer.valueOf(sbase1).intValue();
		
        System.out.println("Digitare la h del primo rettangolo: " );
		
		sh1=tastiera.readLine();
		h1=Integer.valueOf(sh1).intValue();
				
	    }
	 catch (Exception e){}
	 
	 rettangolo rett1= new rettangolo (base1,h1); 
	 
	 
	 
	 System.out.println("il perimetro del primo rettangolo e': "+rett1.perimetro());
	 System.out.println("la base del primo rettangolo e': " + rett1.area() );
	 
	 
		String sbase2;
		String sh2;
		
		int base2=0;
		int h2=0;

		 try{
			
			System.out.println("Digitare la base del secondo rettangolo: " );
			
			sbase2=tastiera.readLine();
			base2=Integer.valueOf(sbase2).intValue();
			
	        System.out.println("Digitare la h del secondo rettangolo: " );
			
			sh2=tastiera.readLine();
			h2=Integer.valueOf(sh2).intValue();
					
		    }
		 catch (Exception e){}
		 rettangolo rett2= new rettangolo (base2,h2);
		 
		 System.out.println("il perimetro del secondo rettangolo e': "+rett2.perimetro());
		 System.out.println("la base del secondo rettangolo e': " + rett2.area() );
		 
	 String sraggio1;
			
	 int raggio1=0;
	 
	 try{
		 System.out.println("digitare il raggio del primo cerchio: ");
		 
		 sraggio1=tastiera.readLine();
		 raggio1=Integer.valueOf(sraggio1).intValue();
	 }
	 catch (Exception e){}
	 
	 cerchio cerc1= new cerchio (raggio1);
	 
	 System.out.println("l'area del primo cerchio e': "+cerc1.area());
	 System.out.println("il perimetro (o circonferenza) del primo cerchio e': "+cerc1.perimetro());
	 
	 String sraggio2;
		
	 int raggio2=0;
	 
	 try{
		 System.out.println("digitare il raggio del secondo cerchio: ");
		 
		 sraggio2=tastiera.readLine();
		 raggio2=Integer.valueOf(sraggio2).intValue();
	 }
	 catch (Exception e){}
	 
	 cerchio cerc2= new cerchio (raggio2);
	 
	 System.out.println("l'area del secondo cerchio e': "+cerc2.area());
	 System.out.println("il perimetro (o circonferenza) del secondo cerchio e': "+cerc2.perimetro());
	 
	 double maxarea=0;
	 
	 if(rett1.area()>rett2.area())  maxarea=rett1.area();
	 else maxarea=rett2.area();
		 if(cerc1.area()>maxarea) maxarea=cerc1.area();
		 if(cerc2.area()>maxarea) maxarea=cerc2.area();
		 
			 System.out.println("L'area piu' grande e': "+maxarea);


			 double minp=0;
			 if(rett1.perimetro()<rett2.perimetro())  minp=rett1.perimetro();
			 else minp=rett2.perimetro();
				 if(cerc1.perimetro()<minp) minp=cerc1.perimetro();
				 if(cerc2.perimetro()<minp) minp=cerc2.perimetro();
				 
					 System.out.println("Il perimetro piu' piccolo e': "+minp);
	 
	
}
}
}
}
Adesso... come faccio a usare le classi rettangolo.java e cerchio.java?? Help!

Ps: uso Eclipse come IDE
uscrocc è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2014, 15:13   #7
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da uscrocc Guarda i messaggi
Adesso... come faccio a usare le classi rettangolo.java e cerchio.java?? Help!
Sono confuso! Nel main usi le classi, apparentemente in modo corretto. Come mai chiedi come usarle se gia' le usi?
Hai qualche dubbio in particolare?
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2014, 15:27   #8
uscrocc
Member
 
Iscritto dal: Feb 2014
Messaggi: 60
Quote:
Originariamente inviato da sottovento Guarda i messaggi
Sono confuso! Nel main usi le classi, apparentemente in modo corretto. Come mai chiedi come usarle se gia' le usi?
Hai qualche dubbio in particolare?
Compilandolo mi da questi errori

Codice:
        rettangolo cannot be resolved to a type
	rettangolo cannot be resolved to a type
	rettangolo cannot be resolved to a type
	rettangolo cannot be resolved to a type
	cerchio cannot be resolved to a type
	cerchio cannot be resolved to a type
	cerchio cannot be resolved to a type
	cerchio cannot be resolved to a type

Ultima modifica di uscrocc : 20-11-2014 alle 15:34.
uscrocc è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2014, 15:45   #9
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da uscrocc Guarda i messaggi
Compilandolo mi da questi errori

Codice:
        rettangolo cannot be resolved to a type
	rettangolo cannot be resolved to a type
	rettangolo cannot be resolved to a type
	rettangolo cannot be resolved to a type
	cerchio cannot be resolved to a type
	cerchio cannot be resolved to a type
	cerchio cannot be resolved to a type
	cerchio cannot be resolved to a type
Se non ricordo male, trattasi di bug di Eclipse. Hai provato a farlo ripartire?
Per curiosita' ho provato a compilare il codice con javac ed ho provato le versioni 6, 7, 8 e funziona
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
DAZN Full in sconto a partire da 19,99 e...
iPhone 18 Pro disponibile su Amazon a 1....
ECOVACS T90 OMNI a 439€ e T90 MAX OMNI a...
Questa Proscenic è la scopa elett...
Microsoft Defender: falso allarme sull'a...
Aerei in volo e truppe pronte all'assalt...
Usano Claude per hackerare OpenAI: ricer...
RatHat: il nuovo malware Android usa il ...
Domanda di petrolio in calo di 2,5 milio...
Il meglio delle offerte weekend Amazon a...
Dopo oltre 100 anni di tentativi, l'IA d...
Speciale robot aspirapolvere in offerta ...
L'IA sta cancellando i lavori junior? Il...
Debutta Chery Italia: non più sol...
Addio ai dischi? Xbox ci aveva già...
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: 19:31.


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