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

时间:2013-12-08 16:02:49

标签: java math sum digit alternating

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

因此字符串“123456789”应该是:

Q1:9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 = 45
Q2:89 + 67 + 45 + 23 + 1 = 225
Q3: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
Q2: 225
Q3: 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);

1 个答案:

答案 0 :(得分:0)

要解决的两件事:

  • 删除字符串反转。
  • i从0开始。

演示在这里工作:http://ideone.com/vbyYzQ