Salve,
premetto che mi sono appena avvicinato al linguaggio java e ovviamente mi sto trovando davanti i primi problemini..
Spero che qualcuno mi possa aiutare:
Il programa è questo:finchè in input c'è un numero >0 fai max,min,e media dei dati in ingresso.
Appena si da 0 i dati vengono passati ad una classe che traccia un grafico con questi dati.
Il prossimo numero in ingresso>0 dà inizio nuovamente al processo.
Tutto termina quando dopo lo 0 viene dato in ingresso -1..
Il problema è che il grafico viene tracciato solo relativamente all'ultimo gruppo di dati in ingresso,'dimenticando' i dati precedenti,mentre io avrei voluto un grafico totale che mostrasse i dati relativi ad ogni gruppo di dati(che termina con lo 0..).
Ecco il main:
Questa invece è la classe:codice:import java.util.Scanner; import javax.swing.JFrame; public class Media { public static void main(String args[]){ Scanner input=new Scanner(System.in); Graficomedia pannello=new Graficomedia(); int l,a,g=0; while((a=input.nextInt())>-1){ l=a; int media,p=40,sum=0,max=l,min=l,conta=1; while((a=input.nextInt())>0){ if(a>max) max=a; if(a<min) min=a; conta++; sum+=a; } media=sum/conta; g+=p; /*questo parametro che viene passato permette alle linee del grafico di non essere posizionate nello stesso punto, ma spostate l'una dall'altra di g.*/ pannello.Metodo(media,max,min,g); } JFrame application=new JFrame(); application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); application.add(pannello); application.setSize(300,300); application.setVisible(true); } }
Grazie a chiunque mi voglia aiutare..codice:import java.awt.Graphics; import javax.swing.JPanel; public class Graficomedia extends JPanel { int med,mass,mini,a; public void Metodo(int me,int mas,int mi,int jj) { med=me; mass=mas; mini=mi; a=jj; } public void paintComponent(Graphics g){ super.paintComponent(g); int larg=getWidth(); int alt=getHeight(); int media=med*2; int max=mass*2; int min=mini*2; int b=10; g.drawLine(10,10,10,alt-10); g.drawLine(10,alt-10,larg-10,alt-10); g.drawLine(a,10,a,alt-10); g.drawLine(a-b,alt-10-min,a+b,alt-10-min); g.drawLine(a-b,alt-10-max,a+b,alt-10-max); g.drawLine(a-b,alt-10-media,a+b,alt-10-media); } }

Rispondi quotando