Java 将数字相加成整数

Java 将数字相加成整数,java,Java,我对这个问题很困惑。我正在阅读由Y.Daniel Liang撰写的java书籍第9版《java编程入门》中的一章。本章是关于初级编程的,只教我如何声明基本变量和做基本算术。当我在线查看帮助时,我得到的大部分帮助都是for-loop或while-loop,但我还没有读过。任何人都知道如何在没有for循环或while循环的情况下解决这个问题,因为我还没有进入那个章节。我知道%表示除法和/或商数。当我做这个问题手册时,我得到了932的正确答案,也就是14。我做了两次10的除法,加上一个提醒,那两次除法

我对这个问题很困惑。我正在阅读由Y.Daniel Liang撰写的java书籍第9版《java编程入门》中的一章。本章是关于初级编程的,只教我如何声明基本变量和做基本算术。当我在线查看帮助时,我得到的大部分帮助都是for-loop或while-loop,但我还没有读过。任何人都知道如何在没有for循环或while循环的情况下解决这个问题,因为我还没有进入那个章节。我知道%表示除法和/或商数。当我做这个问题手册时,我得到了932的正确答案,也就是14。我做了两次10的除法,加上一个提醒,那两次除法是3和2,然后我加了一个9到3+2的手势,这给了我14分。我对循环知之甚少,却对如何将这种逻辑转换成源代码感到困惑。谢谢

尝试递归方法(希望你能理解这一点,因为它比for更难)

int-digitSum(int-number){
如果(number尝试递归方法(希望你能理解这一点,因为它比for更难)

int-digitSum(int-number){

if(number如果知道最大值为
1000
,则可以不使用任何循环执行此操作

这将有助于:

int digitSum(int number) {
  if (number<10) {
    return number;
  } else {
    int extract = number % 10;
    int remove_extract = number / 10 ;
    return extract + digitSum(remove_extract);
  }
}

这是因为您知道数字在0到1000之间。但是,一旦您了解了循环,您应该再次回到问题并尝试使用循环来解决它,因为这不会将您限制在输入整数的给定范围内。

如果您知道最大值为
1000
,则可以不使用任何循环来解决此问题

这将有助于:

int digitSum(int number) {
  if (number<10) {
    return number;
  } else {
    int extract = number % 10;
    int remove_extract = number / 10 ;
    return extract + digitSum(remove_extract);
  }
}

这是因为你知道数字在0到1000之间。但是一旦你了解了循环,你应该再次回到这个问题,并尝试用循环来解决它,因为这并不限制你输入整数的给定范围。

你就快到了。这个数字(最多)有三位数字,对吗? 最右边的数字是
number%10
。左边的两个数字是
twodights=number/10
,右边?那么,右边的下一个数字是
twodights%10
,右边?最左边的数字是什么?它是
twodights/10
!那么:

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);   
    System.out.print(" Enter a number between 0 and 1000 : ");
    int num = input.nextInt();

    int ones = num % 10;

    int tens = (num / 10) % 10 ;

    int houndreds = (num / 100) % 10;

    int answer = ones + tens + houndreds;

    System.out.print(" The sum of the digit is " + answer);

}
就这样


正如评论所建议的,你也可以通过循环来实现这一点,但是,由于你引用的问题将数字限制在1000,而且你似乎还不太了解循环,这似乎更像是你正在阅读的书的作者对这个问题的想法。

你几乎做到了。这个数字(最多)三位数,对吗? 最右边的数字是
number%10
。左边的两个数字是
twodights=number/10
,右边?那么,右边的下一个数字是
twodights%10
,右边?最左边的数字是什么?它是
twodights/10
!那么:

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);   
    System.out.print(" Enter a number between 0 and 1000 : ");
    int num = input.nextInt();

    int ones = num % 10;

    int tens = (num / 10) % 10 ;

    int houndreds = (num / 100) % 10;

    int answer = ones + tens + houndreds;

    System.out.print(" The sum of the digit is " + answer);

}
就这样



正如评论所建议的,您也可以通过循环来实现这一点,但是,由于您引用的问题将数字限制为1000,而且您似乎还不太了解循环,这似乎更像是您正在阅读的书的作者对这个问题的想法。

您只需通过while循环进入该章……t他的这类问题通常会通过for/loop或递归调用方法来解决。因为你知道提取的数字不会超过四位,所以你可以在没有循环的情况下完成这项工作,只需重复一些你已经拥有的代码。但是在问这个问题之前,你至少应该学习语言的基本知识。你只需要请参阅while循环的那一章……这类问题通常可以通过for/loop或对方法的递归调用来解决。因为您知道提取的数字不会超过四位,所以您可以在不使用循环的情况下,通过重复一些您已有的代码来完成。但您至少应该学习lan的基本知识在这里提问之前先用语言。让我们希望用户理解“输入0到1000之间的数字”意味着“小于1000”;-)好吧,是的;)这是一个很好的例子,说明了客户支持在大型产品中的重要性。让我们希望用户理解“输入0到1000之间的数字”意味着“小于1000”;-)好的,是的;)这是一个很好的例子,说明了客户支持在大规模产品中的重要性。110%诚实地说,要求不懂for循环或基本函数的人理解递归函数就像要求知道如何焊接来设计微芯片的人一样。为什么要投否决票?这是一种不用担心就可以解决问题的方法这实际上是问题的答案,我已经解释过这比for难(也许他是个聪明的学生,知道它是如何工作的)它不符合用户的知识领域,因此不是当前问题的正确答案。我认为这是一个很好的解决方案,因为它允许不带循环地计算数字的总和。它完全符合问题标准,是最普遍的解决方案。要理解循环,你必须了解它们。但我认为如果知道如何调用方法,就可以理解墨水递归。我不认为这是在循环之后出现的。即使它比循环语法更直观,但这只是使用堆栈创建一个循环。如果用户不知道控制结构,那么使用“if”语句与“while”语句一样陌生。110%诚实,询问某人不懂for循环或基本函数的人理解递归函数就像问知道如何焊接的人设计微芯片一样。为什么要下表决?这是一种不用for/loop就能解决问题的方法。这实际上是问题的答案,我已经解释过这比for更难(也许他是一个聪明的学生,知道它是如何工作的)它不符合用户的知识领域,因此不是一个正确的答案