声明说:
从键盘上连续读取整数。当你读到-1时程序必须指示我们读取了多少介于1和100之间的数字他们的算术平均值是多少(MediaNum.java)。
我推送这个代码:
import java.util.*;
public class MediaNum {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
double number, sum=0, medium;
int counter=0;
System.out.println("When you want to finish enter '-1'.");
System.out.println("Enter the numbers:");
number = entrada.nextDouble();
while (number != -1){
sum = sum + number;
counter++;
number = entrada.nextDouble();
}
if (number == -1){
counter++;
System.out.println("counter");
}
if (number == -1 && number < 101){
medium = sum/counter;
System.out.println("The medium of the numbers entered is: "+medium);
}
}
}
介质的部分和我输入-1时计数器结束的部分是正确的,但错误是当我输入一个大于100的数字时,计数器计数这个数字,介质将不正确。
如果符合条件,只需计算数字:
while (number != -1){
if(number >= 1 && number <= 100) {
sum += number;
counter++;
}
number = entrada.nextDouble();
}
的问题
while (number != -1){
sum = sum + number;
counter++;
number = entrada.nextDouble();
}
你正在添加每个数字,你只想要那些<100
尝试此代码
import java.util.*;
public class MediaNum {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
double number=0, sum=0, medium=0;
int counter=0;
System.out.println("When you want to finish enter '-1'.");
while(number!=-1){
System.out.println("Enter the numbers:");
number = entrada.nextDouble();
if((number>100 || number<1)&&number!=-1){
continue;
}
if(number==-1){
break;
}
sum += number;
counter++;
}
System.out.println("counter :" +counter);
if(counter!=0){
medium = sum/counter;
}
System.out.println("The medium of the numbers entered is: "+medium);
}
}
您可以试试这个。它有效。我是用递归函数做的。如果有效,请添加注释。
import java.util.*;
class AM{
double s=0;int co=0;
double p;
public void show(){
Scanner sc=new Scanner(System.in);
System.out.println("Enter the number:-");
p=sc.nextDouble();
if(p!=-1&&p<=100){
s+=p;
co++;
show();
}
else
{
System.out.println("The average is:-"+(s/co));
System.out.println(co+" "+"numbers were entered.");
}
}
}