2016-02-03 4 views
1

Я делаю проект для школы, и я пытаюсь рассчитать расход топлива на определенном расстоянии, но коммутатор всегда возвращает 0. Я пробовал разные вещи, но ни один из них они, похоже, работают.Возвращаемое значение переключателя всегда 0

public Double DetermineFuelConsumption (String Car, Double Kilometers) 
    { 
     Double FuelConsumption = 0; 

     switch (Car) 
     { 
      // (14/100) ---> Liters per 100 Kilometers 
      case "LaFerrari": 
       FuelConsumption = (14/100) * Kilometers; 
       break; 
      case "Nissan GT-R Nismo": 
       FuelConsumption = (12/100) * Kilometers; 
       break; 
      case "Pagani Huayra": 
       FuelConsumption = (18/100) * Kilometers; 
       break; 
      case "McLaren P1": 
       FuelConsumption = (8/100) * Kilometers; 
       break; 
      case "Lamborghini Aventador": 
       FuelConsumption = (16/100) * Kilometers; 
       break; 
      case "Smart": 
       FuelConsumption = (4/100) * Kilometers; 
       break; 
      case "Porsche 911": 
       FuelConsumption = (9/100) * Kilometers; 
       break; 
      case "Audi R8": 
       FuelConsumption = (15/100) * Kilometers; 
       break; 
     } 
     return FuelConsumption; 
    } 
+0

Вы проверили, отлаживая то, что внутри переменной автомобиля? –

+0

Показать пример вызова, который возвращает ноль. –

+3

поиск целочисленного деления –

ответ

7

Все эти цифры, которые вы делящихся на 100 даст 0.

Это целочисленное деление: результат целое число, деленное на целое число всегда является целым числом. Необходимо указать, что ваши номера плавающих типов:

public Double DetermineFuelConsumption (String Car, Double Kilometers) 
{ 
    Double FuelConsumption = 0; 

    switch (Car) 
    { 
     // (14/100) ---> Liters per 100 Kilometers 
     case "LaFerrari": 
      FuelConsumption = (14d/100d) * Kilometers; 
      break; 
     case "Nissan GT-R Nismo": 
      FuelConsumption = (12d/100d) * Kilometers; 
      break; 
     case "Pagani Huayra": 
      FuelConsumption = (18d/100d) * Kilometers; 
      break; 
     case "McLaren P1": 
      FuelConsumption = (8d/100d) * Kilometers; 
      break; 
     case "Lamborghini Aventador": 
      FuelConsumption = (16d/100d) * Kilometers; 
      break; 
     case "Smart": 
      FuelConsumption = (4d/100d) * Kilometers; 
      break; 
     case "Porsche 911": 
      FuelConsumption = (9d/100d) * Kilometers; 
      break; 
     case "Audi R8": 
      FuelConsumption = (15d/100d) * Kilometers; 
      break; 
    } 
    return FuelConsumption; 
} 

Здесь суффикс d указывает, что эти цифры являются двойники, а не целые числа.

3

попробовать

FuelConsumption = (14d/100d) * Kilometers; 
+1

(Во всех выражениях, где выполняется деление, поскольку '16/100' является целым числом, поэтому это даст' 0', а не '0.16f'.) –

3

Вы пытаетесь разделить 2 целых числа (а/б), который в случае < б будет фракцию, которую 0.some номер который в свою очередь будет округлен до int, то есть 0. Затем умножьте 0 * километров, ну .. вы видите изображение.

Вместо этого следует изменить его на (14/100d).