我想检查一个数字是否是正方形,一个数字是否是三角形。问题发生在sqrt(num)上,它为我测试的所有数字返回0
我正在使用一个在线编译器,尝试了几个编译器,所以这不是一个编译问题。尝试将num声明为double和int,结果相同
我是Java新手,但对编程并不陌生,我在网上搜索了几次,检查了我的代码,一切看起来都很好,在添加用于检查三角数的变量之前,它甚至按预期工作,但在声明变量checkTri和checkTriSqr后,这开始发生。我确信这与声明这些变量无关(几乎可以肯定),有人能帮我理解这里发生了什么吗?
import static java.lang.Math.sqrt;
import static java.lang.Math.round;
public class Parent{
public static void main(String[] args){
class Number
{
public int num ;
double numSqr = sqrt(num );
double roundNumSqr = round(numSqr) ;
double checkTri = 8 * num + 1 ;
double checkTriSqr = sqrt(checkTri) ;
public void prinTest()
{
System.out.println(num);
System.out.println(numSqr);
System.out.println(roundNumSqr);
System.out.println(checkTri);
System.out.println(checkTriSqr);
}
public boolean isSqr()
{
if (numSqr == roundNumSqr)
{
return true;
}
else
{
return false;
}
}
public boolean isTriangular(){
if (checkTriSqr * checkTriSqr == checkTri )
{
return true;
}
else
{
return false;
}
}
}
Number number = new Number();
number.num = 350;
number.prinTest();
System.out.println(number.isSqr());
System.out.println(number.isTriangular());
}
}
编辑:下面的屏幕截图来自我正在学习的教程,关于在方法中声明类!
值numSqr
,roundNumSqr
等都是在对象创建时设置的,但是在创建对象之前,您不会将num
设置为任何值。结果是,比如说,,
创建时:
num = 0
因此
numSqr = 0
roundNumSqr = 0
等
然后,您设置num=350
,但您不重置NumSqr等的值,所以情况仍然如此:
numSqr = 0
roundNumSqr = 0
您需要为此类创建一个构造函数,该构造函数接受num的值,然后设置所有相应的值,以便仅在设置num之后设置它们(或者,添加一个更新所有值的“计算”函数)。
numSqr
是在构造函数中创建的,而number。num=350
在对象构造之后声明。
您可以使用这样的构造函数:
public Numer(int num){
this.num=num;
this.numSqr=sqrt(num)
//.... ... ...
}
您还可以使用空构造函数和setter来设置number属性:
public void setNumber(int num){
this.num=num;
this.numSqr=sqrt(num)
//.... ... ...
}
这个:
public int num ;
double numSqr = sqrt(num );
在构造实例时将num
初始化为0(在没有赋值的情况下为整数的默认值),然后立即将numSqr
设置为零。
每次再次设置num
,都需要重新计算sqrt()
(可能通过提供方法setNum()
并重新计算该方法中的所有内容)
顺便说一句,我不会叫你的类Number
。标准Java类集中已经有一个Number类。
问题内容: 我有以下代码。应该返回表的最后一行的mysqli_insert_id()(在本例中为“ $ last_row”)始终返回0。为什么会这样呢? 问题答案: 并 没有 返回表的最后一排的ID。从文档中,它: …返回由查询产生的ID,该查询是对具有具有AUTO_INCREMENT属性的列的表进行的。如果最后一个查询不是or 语句,或者如果修改后的表没有带有属性的列,则此函数 将返回零 。 (
问题内容: 我一直在获取要使用mysqli返回的行数方面遇到麻烦。即使确实有一些结果,我每次都会得到0。 为什么没有显示正确的数字? 问题答案: 您需要先调用num_rows查找: 请参阅文档,该文档显示在页面顶部附近(在主要说明区域中)…
我知道(-0==0)是真的。我很想知道为什么-0 当我在stackoverflow执行上下文中运行这段代码时,它返回。 但是当我在浏览器控制台中运行相同的代码时,它返回。那是为什么呢?我试图在谷歌上搜索它,但没有找到任何有用的东西。这个问题可能不会给某个人的实际例子增加价值,我想了解JS是如何计算它的。
问题内容: 我有这样的事情: 而且我总是得到“时钟周期为:0-0”的输出 知道为什么会这样吗? (仅给出一点点细节,something_else()函数使用蒙哥马利表示法执行从左到右的求幂运算,而且我不确定不确定something_else()函数确实花费了一些不可忽略的时间。) 这是在Linux上。uname -a的结果是: 问题答案: 该功能不测量CPU时钟周期。 C说: “ 从实现定义的仅与
问题内容: 为什么以下返回0? 问题答案: 月份从0(一月)到11(十二月)进行编号。 参考:
问题内容: 我正在尝试一个需要Facebook用户提供一些信息的网站,正在使用PHP和JS SDK。 我在PHP中有一个功能: 在一个类中,该类包含来自SDK的facebook对象。 然后在一个块上,我这样做: FB JS环境已正确设置(我认为),因此可以正常工作。因此,用户会弹出窗口并授权该站点。 问题是即使用户授权了该应用程序之后,$ user也始终为0,这意味着始终返回0,然后列出用户(包括