Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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_Methods_Sum Of Digits - Fatal编程技术网

理解方法。Java代码

理解方法。Java代码,java,methods,sum-of-digits,Java,Methods,Sum Of Digits,编写一个计算整数中数字之和的方法。使用 以下方法标题:publicstaticintsumdights(长n) 编程问题5.2。第212页 请原谅我对编程的陌生。我很难理解和回答这个问题。这是我到目前为止所拥有的。请帮忙,如果你不介意的话,解释一下我做错了什么 import java.util.Scanner; public class PP52v2 { public static void main(String [] args) { int sum = sumDigit

编写一个计算整数中数字之和的方法。使用 以下方法标题:
publicstaticintsumdights(长n)

编程问题5.2。第212页

请原谅我对编程的陌生。我很难理解和回答这个问题。这是我到目前为止所拥有的。请帮忙,如果你不介意的话,解释一下我做错了什么

import java.util.Scanner;

public class PP52v2 {

    public static void main(String [] args) {

    int sum = sumDigits(n);
    System.out.println("The sum is: " + sum);

    }//main

        public static int sumDigits(long n) {

            Scanner input = new Scanner(System.in);

            System.out.println("Enter your digits");
            n = input.nextLong();
            int num = (int)(n);
            int sum;


            while(num > 0) {

            sum += num % 10; //must mod - gives individual numbers
            num = num / 10; //must divide - gives new num

            }//loop
            return sum;
        }//sumDigits

}//class

你的代码对我来说很好

我刚刚将
int sum=sumdights(n)
更改为
int sum=sumdights(0)
,因为没有声明
n


要正确完成,只需将扫描仪放入main方法,并将结果(长
long
值)传递给方法
sumdights(长n)
基本上,您不应该在方法内部处理用户输入。您应该将用户输入传递到您的方法中。除此之外,一切看起来都很好。我在下面做了一点小小的改变:

import java.util.Scanner;

public class PP52v2 {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("Enter your digits");
        long n = input.nextLong();
        int sum = sumDigits(n);
        System.out.println("The sum is: " + sum);
    }// main

    public static int sumDigits(long n) {

        int num = (int) (n);
        int sum = 0;

        while (num > 0) {

            sum += num % 10; // must mod - gives individual numbers
            num = num / 10; // must divide - gives new num

        }// loop
        return sum;
    }// sumDigits

}// class
做提示

System.out.println(“输入数字”);
n=input.nextLong()

main(String[]args)
方法中,因为n当前未在main方法的作用域中声明

public static int sumDigits(int num) {
    int sum = 0;
    while(num > 0) {

        sum += num % 10; //must mod - gives individual numbers
        num = num / 10; //must divide - gives new number
    } //End loop
    return sum;
}

首先,您不应该在这个方法中读入数字,因为它接受数字作为参数。应该在调用
long inputNum=input.nextLong()后调用该方法
在编写方法时,使用
int digitSum=sumdights((int)inputNum)

可以获得输入、输出和副作用。目标是选择三者的正确组合,使方法和程序作为一个整体,符合预期

看起来你的方法应该以一个数字作为输入,并将每个数字相加后返回一个最终的和

编写测试

通常当你编程时,你会想出一些使用你想象的函数的代码。这叫做测试。对于测试,这可能会起作用:

System.out.println("123 should be 6: " + sumDigits(123));
选择签名

您已成功更正了正确的签名。很好

实施方法

这是你有点困惑的地方。通读每一行代码的作用,看看它是否实现了您的目标

// set up a scanner for reading from the command line
// and print a message that you expect digits
Scanner input = new Scanner(System.in);
System.out.println("Enter your digits");

// read the next long number from the input stream
n = input.nextLong();
为什么这是你方法的一部分?您已经将数字作为参数
n
传入

// cast the number to an integer
int num = (int)(n);
再说一次,除了可能出现大量错误之外,我不确定这是在实现什么

// initialize the sum variable to 0.
int sum;
将总和显式设置为0会更清楚<代码>整数和=0

// add the last digit and truncate the number in a loop
while(num > 0) {
    sum += num % 10; //must mod - gives individual numbers
    num = num / 10; //must divide - gives new num
}

// actually return the calculated sum
return sum;

这似乎是您需要的方法的唯一部分。希望这有帮助

由于输入数字可以是正的,也可以是负的,因此需要将其转换为绝对值以获得数字之和。然后,对于每个迭代,将余数添加到总和中,直到商为0

public static int sumDigits(long n) {
    int sum = 0;
    long quotient = Math.abs(n);
    while(quotient > 0) {
        sum += quotient % 10;
        quotient = (long) quotient / 10;
    }
    return sum;
}

您必须解释您预期会发生什么以及实际发生什么。您必须向该方法传递一个数字,因此从
main
方法获取用户输入,并传递它
sumdights()
感谢您的回复。我正试图写一个方法来计算整数中的数字之和。这种方法是我遇到麻烦的地方。我应该使用以下方法头:publicstaticintsumdights(longn)。我的问题可能是因为我没有正确地设定值。:D我的GG刚被删除:(我是新来投票的,否则我会的。谢谢你帮我把它分解。