而/如果Loop在课堂上不起作用

时间:2016-01-24 22:32:32

标签: class if-statement while-loop

我正在学习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());
    }
}

感谢您提供的任何帮助。

2 个答案:

答案 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());
            }
}

希望这有助于。