理解方法。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刚被删除:(我是新来投票的,否则我会的。谢谢你帮我把它分解。