我正在学习java,而且我的if
代码没有运行时遇到问题。
在下面的代码中,我试图确定一个数字(变量num
)是否是三角形数字(1,3,6,10等)。代码应该贯穿并给出" Is Triangle"。然而它一直在吐出Null。
我知道这不是执行此代码的最有效方法,但我正在尝试学习如何使用类。
public class HelloWorld {
public static void main(String[] args) {
class NumberShape {
int num = 45;
int tri = 0;
int triplus = 0;
String triresult;
public String triangle() {
while (tri < num) {
if (tri == num) {
triresult = "Is a Triangle";
System.out.println("Is a Triangle");
} else if (tri + (triplus + 1) > num){
triresult = "Is Not a Triangle";
} else {
triplus++;
tri = tri + triplus;
}
}
return triresult;
}
}
NumberShape result = new NumberShape();
System.out.println(result.triangle());
}
}
感谢您提供的任何帮助。
答案 0 :(得分:0)
仔细地循环。您可能会发现存在
的情况(tri < num)
失败,因此你会退出循环,而
(tri == num)
和
(tri + (triplus + 1) > num)
也都失败了,所以在你失败之前没有设置文字。
您可能希望在方法中对tri进行if测试,而不是修改tri,以减少您对代码工作原理的困惑。
答案 1 :(得分:0)
试试这段代码:
public class HelloWorld {
public static void main(String[] args) {
class NumberShape {
int num = 10;//Try other numbers
int tri = 0;
int triplus = 0;
int res = 0;
String triresult = "Is Not a Triangle";
int[] tab= new int[num];
public String triangle() {
//to calculate the triangle numbers
for(int i = 0; i<num; i++){
res = res + i;
tab[i]=res;
}
//To check if num is a triangle or not
for(int i = 0; i<tab.length; i++){
System.out.println(">> " + i + " : " + tab[i]);
if(tab[i]== num){
triresult = num + " Is a Triangle";
break;//Quit if the condition is checked
}else{
triresult = num + " Is Not a Triangle";
}
}
return triresult;
}
}
NumberShape result = new NumberShape();
System.out.println(result.triangle());
}
}
希望这有助于。