事实上是可以的,但是我的一个程序出了点小问题,同类的方法访问不了该类的成员变量,贴出来给大家看一下:
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();
}}
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();
}}
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();}你这里定义的是局部变量,把红字的去掉就可以了
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了
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();
}
}
理解的更好一点