Non ho testato il tuo codice ma da quel che vedo è un banale problema di scope sovrapposti delle variabili. Tu hai due variabili che si chiamano discr e che sono dello stesso tipo (int), una è una variabile di istanza della classeOriginariamente inviato da motogpdesmo16
premetto a tutti che sono più che neofita su questo tipo di linguaggio (Praticamente ho ripreso a scrivere su questo tipo di compilatore Like Pascal dopo 3 anni di Visual Basic....).
Il codice del mio primo programmino (dopo il tradizionale "Hello World" propedeutico) è il seguente:
Nella variabile discr (evidenziata di rosso) mi appare sempre 0, nonostante venga calcolata ed utilizzata correttamente per trovare le soluzioni (che poi sono quelle giuste). DOve sbaglio??codice:import java.util.Scanner; public class equazione { private int a; private int b; private int c; private int discr; private float x1; private float x2; public equazione (int ax, int bx, int cx) { a=ax; b=bx; c=cx; discr=(b * b) - (4 * a * c); } public double getSolution1() { return ((-b)+(Math.sqrt(discr)))/(2*a); } public double getSolution2 () { return ((-b)-Math.sqrt(discr))/(2*a); } public static void main (String[] args) { int discr=0; Scanner inA= new Scanner (System.in); System.out.print ("Inserisci il coefficiente del termine di secondo grado: "); int a=inA.nextInt(); Scanner inB= new Scanner (System.in); System.out.print ("Inserisci il coefficiente del termine di primo grado: "); int b=inB.nextInt(); Scanner inC= new Scanner (System.in); System.out.print ("Inserisci il coefficiente del termine noto: "); int c=inC.nextInt(); equazione equa=new equazione (a,b,c); System.out.println("Discriminante: D= " + discr) ; System.out.println("Soluzione1: x1= " + equa.getSolution1 ()); System.out.println("Soluzione2: x2= " + equa.getSolution2 ()); } }
Scusate se è una domanda banale, però, come detto, dopo 3 anni di VB il cervello è un po' "arrugginito" nei confronti di questo tipo di linguaggi di programmazione.
Grazie.
l'altra è una variabile locale al metodo main:codice:........ private int a; private int b; private int c; private int discr; private float x1; private float x2; ........
Se tu stampi la variabile chiamandola solo discr quella che ti viene stampata è quella locale al metodo,che come vedi viene inizializzata a zero e tale rimane.Se vuoi accedere alla variabile discr di istanza della classe lo puoi fare riferendola con this.discr ma solo in un metodo non statico, (quindi se lo fai nel main ti da errore). Spero di aver fugato i tuoi dubbi ,se qualcosa non è chiara chiedi pure comunquecodice:public static void main (String[] args) { int discr=0; ........