Java 我在这个算法上做错了什么?

Java 我在这个算法上做错了什么?,java,Java,我已经被这个密码困了好几个小时了。 总和是S=1-x+x^2-x^3+x^4。 我们要求X和N的起始值为i=0。 当上一个指数i为奇数时,我们加x^i,然后 如果前面的指数是偶数,我们减去x^i。 我把它们放在一个循环中,但我似乎不能正确地得到总数。 谁能告诉我我做错了什么? 谢谢大家! import java.util.Scanner; public class hw1 { public static void main(String[] args) { try (S

我已经被这个密码困了好几个小时了。 总和是S=1-x+x^2-x^3+x^4。 我们要求X和N的起始值为i=0。 当上一个指数i为奇数时,我们加x^i,然后 如果前面的指数是偶数,我们减去x^i。 我把它们放在一个循环中,但我似乎不能正确地得到总数。 谁能告诉我我做错了什么? 谢谢大家!

import java.util.Scanner;

public class hw1 {
    public static void main(String[] args) {
        try (Scanner scan = new Scanner(System.in)) {
            System.out.println("Sum = 1^0-x^1+x^2-x^3..+x^n");
            System.out.println("Enter number X");
            int X = scan.nextInt();
            System.out.println("Enter number N");
            int N = scan.nextInt();
            int sum = 0;
            for (int i = 0; i <= N; i++) {
                if (i < N) {
                    if (i % 2 != 0)    // if I is even 
                    {
                        sum = sum - (X ^ i);
                    } else    // if I is odd 
                    {
                        sum = sum + (X ^ i);
                    }
                }
            }
            System.out.println("Z is " + sum);
        }
    }
}

因此,我在您的代码中修复了一些内容:

我切换了^运算符,正如@Nick Bell指出的,它是的按位异或。 我修正了变量x和n的拼写。在Java中,惯例是给出以小写字母开头的变量名。大写的X和N保留用于标记为final的常量字段以及与对象相对的类。请注意,这只是一个约定,代码在两方面都可以正常工作。它只是有助于阅读代码。 奇数/偶数检查被颠倒:对于偶数,x%2==0为真。 您反转奇偶校验的原因可能是sum上的两个运算被反转了。与问题第一段中对问题的描述相比,你会发现你错在哪里。 如果i
public static void main(String[] args) {
    try (Scanner scan = new Scanner(System.in)) {
        System.out.println("Sum = 1^0-x^1+x^2-x^3..+x^n");
        System.out.println("Enter number X");
        int x = 0;
        while (true) {
            try {
                x = Integer.parseInt(scan.nextLine());
                break;
            } catch (NumberFormatException e) {
                System.out.println("Enter an integer.");
            }
        }
        System.out.println("Enter number N");
        int n = 0;
        while (true) {
            try {
                n = Integer.parseInt(scan.nextLine());
                break;
            } catch (NumberFormatException e) {
                System.out.println("Enter an integer.");
            }
        }
        double sum = 0;
        for (int i = 0; i <= n; i++) {
            if (i % 2 == 0)    // if I is even
                sum = sum + Math.pow(x, i);
            else    // if I is odd
                sum = sum - Math.pow(x, i);
        }
        System.out.println("Z is " + sum);
    }
}

请查看SO上的“如何提问”页面。如果完整的问题被张贴出来,帮助回答会更容易。还有——为什么要在“我非常感谢您,我现在可以工作”的条件下执行for循环呢;公共类hw1{public static void mainString[]args{double i,x=0,n=0,sum=0;try Scanner scan=new ScannerSystem.in{System.out.printlenter x;int x=scan.nextInt;System.out.printlenter n;int n=scan.nextInt;for i=0;i