Java程序显示无关输出
我在做简单的java编程。但是我找不到为什么我的代码不显示exect输出。它应该打印给定数字的sqrt,但输出为0Java程序显示无关输出,java,math,println,Java,Math,Println,我在做简单的java编程。但是我找不到为什么我的代码不显示exect输出。它应该打印给定数字的sqrt,但输出为0 import java.lang.*; class Calculator{ double i; double x=Math.sqrt(i); } public class MultipleObject { public static void main(String[] args) { // TODO Auto-gener
import java.lang.*;
class Calculator{
double i;
double x=Math.sqrt(i);
}
public class MultipleObject {
public static void main(String[] args) {
// TODO Auto-generated method stub
Calculator a=new Calculator();
a.i = 16;
System.out.println(a.x);
}
}
您没有将x(Math.sqrt(i))设置在正确的位置
import java.lang.*;
class Calculator{
double i;
// double x=Math.sqrt(i); // won't work here
double x;
}
public class MultipleObject {
public static void main(String[] args) {
// TODO Auto-generated method stub
Calculator a=new Calculator();
a.i = 16;
// you could do it here
a.x = Math.sqrt(a.i);
System.out.println(a.x);
}
}
或者你可以做的不是把它变成一个变量,而是把它变成一个方法
public double getX() {
return Math.sqrt(this.i);
}
当您创建
计算器
的实例时,将计算x
,此时它是0.0
您应该通过构造函数传递i
,并在构造函数或方法中计算x
class Calculator {
public final double x;
Calculator(double i) {
this.x = Math.sqrt(i);
}
}
> new Calculator(100).x
$1 ==> 10.0
我想你应该看看一些基本的Java教程,很简单:当你调用
a.I=16时,你不会改变x的值创建计算器实例时,code>x
设置为sqrt(0)
。为什么double x=Math.sqrt(i)代码>在实例字段级别不起作用?它会。@GiorgiTsiklauri它不会,因为我还没有初始化。实例字段总是初始化:)@ControlAltDel这是另一点,但它会在运行时崩溃。我的意思是,语义上没有错i
可以通过构造函数初始化,因为它不是静态绑定的,构造函数将在调用Math.sqrt
之前执行。@AlexRudenko如果您的意思是初始化为null或0,那么是的。但这对给定代码的对话没有帮助