为什么我的代码不起作用? java的新成员

时间:2018-03-01 16:13:29

标签: java

我对整个CS场景都很陌生,但很快就进入了它,我选择Java作为我想要学习的第一语言。

我使用的是在线资源,要求我制作一个简单的程序,要求用户输入一个数字,然后它会将权力的总和吐出来。

所以,如果你输入4,我希望它给你2 ^ 0 + 2 ^ 1 + 2 ^ 2 + 2 ^ 3 + 2 ^ 4这是我到目前为止所做的,但是它没有工作, 有什么建议?

我正在使用NetBeans。

System.out.println("Type a number: ");
int number = Integer.parseInt(reader.nextLine());
int i = 0;
int exponent = (int)Math.pow(2,i);
int sum = 0;
while (i <= number) {
     sum += exponent;
 i++;
}
System.out.println("The result is: " + sum);

3 个答案:

答案 0 :(得分:0)

您要在循环外为exponent分配值。

这意味着每次i递增时它的值都不会改变。

解决此问题:

    System.out.println("Type a number: ");
    int number = Integer.parseInt(reader.nextLine());
    int sum = 0;
    for (int i = 0; i <= number; i++) {
        sum += Math.pow(2,i);
    }
    System.out.println("The result is: " + sum);


}

除了生成所需的输出之外,此代码更有效率,因为我删除了exponent变量(因为它可以直接添加到sum),并且我使用了{ {1}}循环(因此不需要声明for的行或i递增的行。

答案 1 :(得分:0)

试试这个:

    int exponent = 0;
    int sum = 0;

    while (i < number) {
        sum += exponent;
        i++;
        exponent = (int) Math.pow(2, i);
    }
    System.out.println("The result is: " + sum);

答案 2 :(得分:0)

带有for循环的整个案例

public static void test(){
    java.util.Scanner reader = new java.util.Scanner(System.in);
    System.out.println("Type a number: ");

    int sum = 0;
    int number = Integer.parseInt(reader.nextLine());

    for (int i = 0; i <= number; i++){
        int exponent = (int) Math.pow(2, i);
        sum = sum + exponent;
    //    System.out.println(i); if you want to see the exponent uncomment this line
    }

    System.out.println("The result is: " + sum);
}