如何将第二个数字与java中整数的最后一位数相加?

时间:2014-10-28 04:27:49

标签: java sum

您能否告诉我如何修复此程序以使“sumSecTolastD”操作符执行以下操作:
1 - 将第二个数字与一个整数中的最后一个数字相加(例如:324 + 564 + 9876 = 29,因为(2 + 4)+(6 + 4)+(8 + 7 + 6) )= 29)。
2 - 如果我只插入一个数字,它仍然可以给我总和(例如:1 + 3 + 4 = 8)。

import java.util.*;
public class Pr66{
      public static void main(String[] args){
      Scanner scan = new Scanner (System.in);
      int num1;
      int num2;
      int num3;
      int sumLastD;
      int sumSecTolastD;

      System.out.print("Please write an integer: ");
         num1 = scan.nextInt();

      System.out.print("Please write an integer: ");
         num2 = scan.nextInt();

      System.out.print("Please write an integer: ");
         num3 = scan.nextInt();

      sumLastD = num1 % 10 + num2 % 10 + num3 % 10;
        System.out.println();
        System.out.println("- LastDigitSum: " + num1 % 10 + " + " + num2 % 10 + " + " + num3 % 10 + " = " + sumLastD);
        
      if (sumLastD % 2 == 0)
        System.out.println("- LastDigitSum: is an even integer");
      else
        System.out.println("- LastDigitSum: is an odd integer");

        System.out.println();

      sumSecTolastD = (num1/10) % 10 + (num2/10) % 10 + (num3/10) % 10;
        System.out.println("- SecToLastSum: " + (num1/10) % 10 + " + " + (num2/10) % 10 + " + " + (num3/10) % 10 + " = " + sumSecTolastD);
                
      if (sumSecTolastD % 2 == 0)
        System.out.println("- SecToLastSum: is an even integer");
      else
      	System.out.println("- SecToLastSum: is an odd integer");
       
        }//main
}//Pr66

3 个答案:

答案 0 :(得分:0)

这只是倒数第二位的数字:

  sumSecTolastD = (num1/10) % 10 + (num2/10) % 10 + (num3/10) % 10;

要将倒数第二个和最后一个数字相加,请将其更改为:

  sumSecTolastD = num1%10 + (num1/10) % 10 + num2%10  + (num2/10) % 10 + num3%10 + (num3/10) % 10;

即使您的所有输入数字都有一个数字,相同的代码也会起作用,因为在这种情况下(numi/10) % 10将是0,并且不会影响总和。< / p>

答案 1 :(得分:0)

这总结了最后的数字:

sumLastD = num1 % 10 + num2 % 10 + num3 % 10;

要获得最后一个和倒数第二个的总和,请将上述结果添加到计算中,以反映倒数第二个数字:

sumSecTolastD = (num1/10) % 10 + (num2/10) % 10 + (num3/10) % 10 + sumLastD;

要使它只使用一位数字也需要额外的检查,并使你的代码更大:

sumLastD = (String.valueOf(num1).length() > 1 ? num1 % 10 : num1) +
(String.valueOf(num2).length() > 1 ? num2 % 10 : num2) +
(String.valueOf(num3).length() > 1 ? num3 % 10 : num3);

是的,您可以将它放在多行上,编译器会忽略不必要的空格。

对于sumSecTolastD将上述内容修改为:

sumSecTolastD = (String.valueOf(num1).length() > 2 ? (num1/10) % 10 : num1) +
(String.valueOf(num2).length() > 2 ? (num2/10) % 10 : num2) +
(String.valueOf(num3).length() > 2 ? (num3/10) % 10 : num3) + sumLastD;

答案 2 :(得分:0)

很抱歉给您带来不便。我的问题被误解了。我的意思是我想编写一个代码来查找三个不同整数的第二个到最后一个数字的总和。例如:如果用户输入了15,34和941,在这种情况下,第二个到最后一个数字将是1,3和4.因此,它们的小计将是1 + 3 + 4 = 8。 / p>

我找到答案,我想与大家分享,我还要感谢所有试图提供帮助的人。谢谢..

import java.util.*;
public class Pr6{
  public static void main(String[] args){
    Scanner scan = new Scanner (System.in);
    int num1;
    int num2;
    int num3;
    int sumSecToLast;
    
    System.out.print("Please write an integer: ");
    num1 = scan.nextInt();
    System.out.print("Please write an integer: ");
    num2 = scan.nextInt();
    System.out.print("Please write an integer: ");
    num3 = scan.nextInt();
    
    sumSecToLast = ((num1/10) % 10) + ((num2/10) % 10) + ((num3/10) % 10);
    System.out.println("The subtotal of the 2nd to the last digit = " + sumSecToLast);
    
    if (sumSecToLast % 2 == 0)
      System.out.println(sumSecToLast + " is an even number.");
    else
      System.out.println(sumSecToLast + " is an odd number.");
    
  }//main
}//Pr6