Member 14938017 Ответов: 3

Java как создать конвертер градуса Цельсия по Фаренгейту


Привет, я хотел бы, чтобы моя программа вычисляла градус Фаренгейта в градус Цельсия и градус Цельсия в градус Фаренгейта. Выход должен быть таким

Дайте температуру в градусах Цельсия или Фаренгейта или введите q, чтобы выйти
&ГТ;20.0 с
>20,0 градуса Цельсия = 68,0 градуса по Фаренгейту
Дайте температуру в градусах Цельсия или Фаренгейта или введите q, чтобы выйти
>68 F
>68,0 градуса по Фаренгейту = 20 градусов Цельсия
Дайте температуру в градусах Цельсия или Фаренгейта или введите q, чтобы выйти
>q
> (выходит из программы)

import java.util.Scanner;
public class RepeatedTempConversion {
    void converter() { 
        // You have to create different types of scanners 
    System.out.println("Give a temperature in Celsius or Fahrenheit or type q to quit");
    Scanner scan = new Scanner(System.in);
    String choice = scan.nextLine();
    if( choice == "q") { 
        System.exit(0); 
    }
    if (choice == temp + " C"){ 

    }
    if(choice == temp + " F")
    }
public static void main(String[] args) {
    new RepeatedTempConversion().converter(); 
    }
}


Что я уже пробовал:

Я попытался установить разные сканеры, а также установить переменные Фаренгейта и Цельсия как int и double, я сделал то же самое для сканеров, но это просто не сработало. Я застрял на том, что я должен делать и как я должен использовать сканеры. Если пример кода можно будет отправить, я буду очень рад. Спасибо

3 Ответов

Рейтинг:
2

Patrice T

Это просто неправильно:

if( choice == "q") {
    System.exit(0);
}
if (choice == temp + " C"){ //temp is not defined at this point
}
if(choice == temp + " F") //temp is not defined at this point
}

Вам нужно проанализировать пользовательский ввод, то есть разбор, вы должны научиться использовать регулярное выражение.
Регулярное выражение позволяет описывать легальные пользовательские вводы и получать биты
Попробуйте сопоставить это "(\d+) +(F|C)"

Всего лишь несколько интересных ссылок, которые помогут построить и отладить регулярное выражение.
Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
RegExr: Learn, Build, & Test RegEx[^]
Онлайн-тестер регулярных выражений и отладчик: PHP, PCRE, Python, Golang и JavaScript[^]
Этот пример показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение: Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]
Этот сайт также показывает регулярное выражение в красивом графике, но не может проверить, что соответствует регулярному выражению: Regexper[^]


Рейтинг:
0

CPallini

Я бы использовал другой подход, чтобы собрать пользовательские выборки:

import java.util.Scanner;
  
public class TempConverter
{
  public static double celsiusToFahrenheit( double celsius)
  {
    return (celsius * 9.0 / 5.0 + 32.0);
  }

  public static double fahrenheitToCelsius( double fahrenheit)
  {
    return ((fahrenheit-32) * 5.0 / 9.0);
  }


  public static void main( String[] args )
  {
    Scanner scan = new Scanner(System.in);
    while (true)
    {
      System.out.println("Choose:\n'F' to enter a temperature in Fahrenheit. \n'C' to enter a temperature in Celsius\nAny other character to quit");
      String choice = scan.next();
      if ( choice.equals("F") )
      {
        System.out.println("Enter the temperature in Fahrenheit degrees");
        double fahrenheit = scan.nextDouble();
        System.out.printf("%.2f Fahrenheit degreees are %.2f Celsius degrees\n", fahrenheit, fahrenheitToCelsius(fahrenheit));
      }
      else if ( choice.equals("C") )
      {
        System.out.println("Enter the temperature in Celsius degrees");
        double celsius = scan.nextDouble();
        System.out.printf("%.2f Celsius degreees are %.2f Fahrenheit degrees\n", celsius, celsiusToFahrenheit(celsius));
      }
      else
        break;
    }
  }
};