2012-06-04 1 views
0

Я пишу программу для вычисления среднего значения с пользовательским вводом.вычислить среднее значение с пользовательским вводом

import java.util.Scanner; 
public class mean 
{ 
    static Scanner input = new Scanner (System.in); 
    public static void main (String[] args) 
    { 
    double i; 
    double sum = 0; 
    int count = 0; 
    do 
    { 
     System.out.println("input"); 
     i = input.nextDouble(); 
     sum = sum + i; 
     count++; 
    }while (i != 0); 
    System.out.println("sum is " + sum + " count is " + (count - 1)); 
    System.out.println("average is " + sum/(count - 1)); 
} 
} 

здесь, если я ввожу 0, он рассчитает. но если в списке 0s. может ли кто-нибудь вести меня в отличном состоянии?

ответ

2

Вы можете спросить сканер, будет ли следующий токен, который сканер считывает, является двойным и прерывается, если это не так. Пример ниже:

import java.util.Scanner; 
public class mean 
{ 
    static Scanner input = new Scanner (System.in); 
    public static void main (String[] args) 
    { 
    double i; 
    double sum = 0; 
    int count = 0; 
    while(input.hasNextDouble()) 
    { 
     System.out.println("input"); 
     i = input.nextDouble(); 
     sum = sum + i; 
     count++; 
    } 
    System.out.println("sum is " + sum + " count is " + (count)); 
    System.out.println("average is " + sum/(count)); 
} 
} 

Если пользователь вводит не-цифровой символ (например, не '+', '-', 0-9, и т.д. ''), то цикл будет перерыв, потому что input.hasNextDouble() вернется ложный.

+1

Отличное решение, однако существует проблема с исходным кодом в том, что вы должны разделить на кол не считать-1, так как отсчет начинается с 0. – LINEMAN78

0

вместо sum = sum + i простой способ будет sum += i

 Смежные вопросы

  • Нет связанных вопросов^_^