我知道这是基础问题,但我无法解决这个问题,所以我需要你的帮助.. 我试图通过使用While循环来找到数字(用户输入)的数字的平均值,例如,数字789的数字的平均值是(7 + 8 + 9 +)/ 3 = 8。 任何人都可以帮我这个..?非常感谢。
overridden
答案 0 :(得分:5)
你的问题与mod有关。您可以按如下方式重写代码。修改不仅可以纠正错误,还可以进行标准化。您需要将平均值更改为浮动或加倍。
import java.util.Scanner;
public class AVE {
public static void main(String[] args) {
int number;
float average = 0;
Scanner kb = new Scanner(System.in);
System.out.println("what is your number?");
number = kb.nextInt();
average = avDigits(number);
System.out.println("The average is " + average);
}
private static float avDigits(int number) {
int digits = 0;
float sum = 0.0F;
while (number > 0) {
digits += 1;
sum += number % 10;
number /= 10;
}
return (sum / digits);
}
}
答案 1 :(得分:1)
您正在使用digits
而不是num
的mod。更改while循环如下:
while (num > 0)
{
digits += 1;
sum += num % 10; //<< Take mod of num here
num/=10;
}
答案 2 :(得分:1)
import java.util.Scanner;
class AVE
{
static int digits = 0;
static float average =0;
static int sum =0;
static int number;
public static void main (String[]args)
{
Scanner kb = new Scanner (System.in);
System.out.println("what is your number?");
number = kb.nextInt();
avDigits();
System.out.println("The average is " + average);
}
public static void avDigits()
{
int num = number;
while (num > 0)
{
digits += 1;
sum += num % 10; /*Do the modulo of num instead of digit. Since doing the modulo of num will give you the last digit*/
num/=10;
}
average = ((float)sum/digits); //average can be in decimal also
}
}