Ошибка двойного уравнения кода для задачи ввода пользователя - PullRequest
0 голосов
/ 12 января 2019

Моим первым заданием является разработка кода, который позволяет пользователю вводить данные о расстоянии в милях, которое он хочет проехать, эффективности использования топлива и стоимости газа. Затем создайте код, чтобы рассчитать общую стоимость поездки.

У меня есть весь код для всех входных значений, но у меня проблемы с самим уравнением. Java не распознает "/". Я не могу понять, что я делаю, если мне не нужно добавить немного кода для работы уравнения.

import java.util.Scanner;
public class DrivingCost
{
    public static void main(String args[])
    {
        Scanner s = new Scanner(System.in);
        System.out.print("Please enter your distance (miles): ");

      Scanner t = new Scanner(System.in);
      System.out.print("Please enter vehicle's fuel efficiency (mpg): ");

      Scanner u = new Scanner(System.in);
      System.out.print("Please enter the price per gallon (dollars): ");

      String distanceInMiles = s.nextLine();
      System.out.println("The distance (miles): " + distanceInMiles);

      String fuelEfficiency = t.nextLine();
      System.out.println("Fuel efficiency (mpg):" + fuelEfficiency);

        String pricePerGallon = u.nextLine();
        System.out.println("Price per gallon (dollars): " + pricePerGallon);

      double tripCost = (distanceInMiles / fuelEfficiency) * pricePerGallon;
      System.out.println("The trip cost (dollars): " + tripCost);
    }
} 

Это ошибка, которую я продолжаю получать:

DrivingCost.java:32: error: bad operand types for binary operator '/'
  double tripCost = (distanceInMiles / fuelEfficiency) * pricePerGallon;
                                     ^

Ответы [ 3 ]

0 голосов
/ 12 января 2019

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

double tripCost = (Double.valueOf(distanceInMiles) / Double.valueOf(fuelEfficiency)) * Double.valueOf(pricePerGallon);

P.S. Правильная проверка входных данных будет хорошим улучшением. В случае, если пользователь вводит неправильный ввод. Также, как уже упоминалось в комментариях, нет необходимости использовать несколько Scanners. Одного будет достаточно.

0 голосов
/ 12 января 2019
  1. Вы выполняете математическую операцию над строкой, вы не можете, вам нужен double тип
    • Double.parseDouble(sc.nextLine()); читает строку и выполняет синтаксический анализ double (преимущества: в целом избегайте ошибок в обратной строке, полезно иметь привычку)
    • sc.nextDouble() читает непосредственно для double
  2. Использовать только один сканер на источник
  3. Имейте хороший заказ между print и сканером, спрашивающим
Scanner sc = new Scanner(System.in);

System.out.print("Please enter your distance (miles): ");
String distanceInMiles = Double.parseDouble(sc.nextLine());
System.out.println("The distance (miles): " + distanceInMiles);

System.out.print("Please enter vehicle's fuel efficiency (mpg): ");
String fuelEfficiency = Double.parseDouble(sc.nextLine());
System.out.println("Fuel efficiency (mpg):" + fuelEfficiency);

System.out.print("Please enter the price per gallon (dollars): ");
String pricePerGallon = Double.parseDouble(sc.nextLine());
System.out.println("Price per gallon (dollars): " + pricePerGallon);

double tripCost = (distanceInMiles / fuelEfficiency) * pricePerGallon;
System.out.println("The trip cost (dollars): " + tripCost);
0 голосов
/ 12 января 2019

Вы можете получить distanceInMiles, fuelEfficiency и pricePerGallon в double, используя s.nextDouble(). После этого вы сможете выполнить double операцию с этими переменными.

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

    System.out.print("Please enter your distance (miles): ");
    double distanceInMiles = s.nextDouble();
    System.out.println("The distance (miles): " + distanceInMiles);

    System.out.print("Please enter vehicle's fuel efficiency (mpg): ");
    double fuelEfficiency = s.nextDouble();
    System.out.println("Fuel efficiency (mpg):" + fuelEfficiency);

    System.out.print("Please enter the price per gallon (dollars): ");
    double pricePerGallon = s.nextDouble();
    System.out.println("Price per gallon (dollars): " + pricePerGallon);

    double tripCost = (distanceInMiles / fuelEfficiency) * pricePerGallon;

    System.out.println("The trip cost (dollars): " + tripCost);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...