2014-12-02 2 views
-1

Начинает расстраиваться здесь. Самостоятельное мышление здесь. Я следую «java, как программировать» в книге Джона Дейтеля, и некоторые довольно случайные документы, которые мой друг (бывший студент CS) отправил меня. Я написал код для расчета средних значений int s, который отлично работал. Затем я хотел протестировать его в double с, но продолжаю получать ошибку, даже если «Инструмент завершен успешно», когда я нажимаю ctrl + . С тех пор я нашел коды других людей, которые выполняют ту же задачу, что и я я понимаю, что не так с моим кодом.среднее значение ошибки массива (сработано с int)

Я пробовал установить racecounter, чтобы удвоить, чтобы удалить средний = (double) total/raceCounter ;, что привело к большему количеству ошибок.

import java.util.Scanner; 

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

     double total; 
     int raceCounter; 
     double racetime; 
     double average; 

     total = 0; 
     raceCounter = 0; 

     System.out.print("Enter race time or -1 calculate: "); 
     racetime = input.nextDouble(); 

     while (racetime != -1) 
     { 
     total = total + racetime; 
     raceCounter = raceCounter + 1; 
     System.out.print("Enter race time or -1 calculate: "); 
     racetime = input.nextDouble(); 
     } 

     if (raceCounter != 0) 
     { 
     average = (double) total/raceCounter; 
     System.out.printf("\nTotal of the %d races entered %d\n", raceCounter, total); 
     System.out.printf("Race average is %.2f\n", average); 
     } 
     else 
     System.out.println("No races were entered"); 
    } 
    } 
+2

Что произойдет, если вы измените тип 'raceCounter' на двойной? –

+1

«но продолжайте получать ошибку»/«больше ошибок»: какие ошибки? –

+0

такая же ошибка, как если бы она не была назначена как double, поместив скриншот в главный пост сейчас – ibimon

ответ

0

Возможно, вы делаете небольшую ошибку в своем первом заявлении printf. Поскольку total является двойным, вы должны использовать формат %f вместо формата %d.

+0

Perfecto !!!!!!!!!!!!!! Не могу поверить, что все было так просто. 90% кода, который я сделал, все из онлайн/книг/форумов и с некоторыми частями пропущу логику. Вы сохранили мне мышь и монитор, потому что они были на пути к первому этажу, с моего верхнего этажа: D – ibimon

+0

. Добро пожаловать, пожалуйста, подумайте о принятии этого ответа, чтобы вопрос можно было закрыть, если это помогло решить вашу проблему. – MrHug

0

Вы не можете использовать printf формат %d для двойной, что был вопрос, использовать %f, как это:

System.out.printf("\nTotal of the %d races entered %.2f\n", raceCounter, total); 

Для получения дополнительной информации см this tutorial


Рекомендуем также обратите внимание, что литье в average = (double) total/raceCounter; является избыточным

0

Я не вижу никаких логических ошибок, кроме того, что вы печатаете, может не работать, поскольку total является «double». Вам нужно изменить его -

System.out.printf ("\ Ntotal из% D рас вошли% .2f \ п", raceCounter, всего);

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