事实上是可以的,但是我的一个程序出了点小问题,同类的方法访问不了该类的成员变量,贴出来给大家看一下:
import java.util.Scanner; public class test {
 public double a;
 public double b;
 public double c;
 public double delta; public void getvalue() {
Scanner sc = new Scanner(System.in);
System.out.print("输入a的值:");
double a = sc.nextDouble(); if (a==0) {
System.out.print("请重新输入a的值,a不等于0:");
a = sc.nextDouble();
}

System.out.print("输入b的值:");
double b = sc.nextDouble();
System.out.print("输入c的值:");
double c = sc.nextDouble();
panduan();

}

public void panduan() {
double x1, x2;
delta = b * b - 4 * a * c;
System.out.println(delta);
if (delta > 0) {
System.out.println("方程有两个不等实根");
x1 = -b + Math.sqrt(delta) / (2 * a);
x2 = -b - Math.sqrt(delta) / (2 * a);
System.out.println(x1);
System.out.println(x2);
} else if (delta == 0) { System.out.println("方程有两个相等实根");
x1 = -b / (2 * a);
System.out.print(x1);
} else if (delta < 0) {
System.out.println("方程有两个虚根");
x1 = -b + Math.sqrt(-delta) / (2 * a);
x2 = -b - Math.sqrt(-delta) / (2 * a);
System.out.println(x1);
System.out.println(x2);
} }
}
//主类
public class TestMain { public static void main(String[] args) {
test test1=new test();
test1.getvalue();
}}

解决方案 »

  1.   

    public void getvalue() {
    Scanner sc = new Scanner(System.in);
    System.out.print("输入a的值:");
    double a= sc.nextDouble();if (a==0) {
    System.out.print("请重新输入a的值,a不等于0:");
    a = sc.nextDouble();
    }System.out.print("输入b的值:");
    double b = sc.nextDouble();
    System.out.print("输入c的值:");
    double c = sc.nextDouble();
    panduan();}你这里定义的是局部变量,把红字的去掉就可以了
      

  2.   


    import java.util.Scanner;class Test {
    public double a;  //楼主开头这里已经
    public double b; //定义了double类型的
    public double c; //a,b,c变量了
    public double delta; public void getvalue() {
    Scanner sc = new Scanner(System.in);
    System.out.print("输入a的值:");
    double a = sc.nextDouble();//结果这里又重新定义了一个局部变量 if (a == 0) {
    System.out.print("请重新输入a的值,a不等于0:");
    a = sc.nextDouble();
    } System.out.print("输入b的值:");
    double b = sc.nextDouble(); //结果这里又重新定义了一个局部变量
    System.out.print("输入c的值:");
    double c = sc.nextDouble();//结果这里又重新定义了一个局部变量
    panduan(); } public void panduan() {
    double x1, x2;
    delta = b * b - 4 * a * c;
    System.out.println(delta);
    if (delta > 0) {
    System.out.println("方程有两个不等实根");
    x1 = -b + Math.sqrt(delta) / (2 * a);
    x2 = -b - Math.sqrt(delta) / (2 * a);
    System.out.println(x1);
    System.out.println(x2);
    } else if (delta == 0) { System.out.println("方程有两个相等实根");
    x1 = -b / (2 * a);
    System.out.print(x1);
    } else if (delta < 0) {
    System.out.println("方程有两个虚根");
    x1 = -b + Math.sqrt(-delta) / (2 * a);
    x2 = -b - Math.sqrt(-delta) / (2 * a);
    System.out.println(x1);
    System.out.println(x2);
    } }
    }
    这样赋值的时候只会把输入的值赋给你方法中定义的局部变量,而你在类中定义的全局变量并没有赋值,正确的做法是直接用全局变量,而不用重新在方法中定义a,b,c了
      

  3.   

    你在方法中声明定义的变量是方法的局部变量,你要想赋值给类成员变量不要重新声明
    a = sc.nextDouble();
    而不是
    double a = sc.nextDouble();或者通过
    public class test {
    public double a;
    public void getvalue() {

    double a = 5.0;
    System.out.println(a);
    System.out.println(this.a);
    }
    public static void main(String[] args) {
    test test1=new test();
    test1.getvalue();
    }
    }
    理解的更好一点