Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA中的数字和与交替数字和_Java_Math_Sum_Digit_Alternating - Fatal编程技术网

JAVA中的数字和与交替数字和

JAVA中的数字和与交替数字和,java,math,sum,digit,alternating,Java,Math,Sum,Digit,Alternating,我想用JAVA计算字符串的数字和&交替数字和(一阶到三阶),但我的尝试似乎根本不起作用 因此,对于字符串“123456789”,ist应为: Q1:9+8+7+6+5+4+3+2+1=45 Q2:89+67+45+23+1=225 第三季度:789+456+123=1368 AQ1:9− 8 + 7 − 6 + 5 − 4 + 3 − 2+1=5 AQ2:89− 67 + 45 − 23+1=45 AQ3:789− 456+123=456 不幸的是: Q1:45 问题2:225 问题3:1962

我想用JAVA计算字符串的数字和&交替数字和(一阶到三阶),但我的尝试似乎根本不起作用

因此,对于字符串“123456789”,ist应为:

Q1:9+8+7+6+5+4+3+2+1=45
Q2:89+67+45+23+1=225
第三季度:789+456+123=1368
AQ1:9− 8 + 7 − 6 + 5 − 4 + 3 − 2+1=5
AQ2:89− 67 + 45 − 23+1=45
AQ3:789− 456+123=456

不幸的是:

Q1:45
问题2:225
问题3:1962年
AQ1:-5
AQ2:35
AQ3:-654

我犯了什么错

String zahlen = new StringBuffer(args[0]).reverse().toString();
int zahl1 = Integer.parseInt(zahlen), zahl2, zahl3;
int quersumme1 = 0, quersumme2 = 0, quersumme3 = 0;
int altquersumme1 = 0, altquersumme2 = 0, altquersumme3 = 0;
int i = 1;

zahl2 = zahl1;
zahl3 = zahl1;

while (zahl1 > 0) {
    if (i % 2 == 0) {
        altquersumme1 += zahl1 % 10;
        altquersumme2 += zahl2 % 100;
        altquersumme3 += zahl3 % 1000;
        i++;
    } else {
        altquersumme1 -= zahl1 % 10;
        altquersumme2 -= zahl2 % 100;
        altquersumme3 -= zahl3 % 1000;
        i++;
    }
    quersumme1 += zahl1 % 10;
    quersumme2 += zahl2 % 100;
    quersumme3 += zahl3 % 1000;
    zahl1 = zahl1 / 10;
    zahl2 = zahl2 / 100;
    zahl3 = zahl3 / 1000;
}

System.out.println("Q1: \t\t" + quersumme1);
System.out.println("AQ2: \t" + altquersumme1);
System.out.println("Q2" + quersumme2);
System.out.println("AQ2:\t" + altquersumme2);
System.out.println("Q3:\t\t" + quersumme3);
System.out.println("AQ3:\t" + altquersumme3);
我还尝试使用基于字符串的解决方案,但我不知道如何调整它以计算二阶和三阶:

String zahlen = "123456789";

int quersumme = 0;

for (int counter = 0; counter < zahlen.length(); counter++) {
    int currentNumber = zahlen.charAt(zahlen.length() - counter -1) - '0';
    quersumme += currentNumber * ((counter % 2 == 0) ? 1 : -1);
}

System.out.println("quersumme: " + quersumme);
String zahlen=“123456789”;
int querysumme=0;
对于(int counter=0;counter
有两件事可以解决它:

  • 拆下管柱
  • i
    从0开始

演示在这里工作:

请不要使用StringBuffer,它在大约十年前被StringBuilder取代。我建议您在调试器中逐步检查您的代码,看看您的程序真正在做什么。我认为您只需去掉“反向”。非常感谢:)到底是什么“抛出java.lang.Exception”因为?那是ideone模板的一部分。这里没人用。