Member 13770853 Ответов: 2

Код, не реагирующий на входные сигналы


это кодовый проект, над которым я работаю, чтобы решить для различных переменных в законе идеального газа(PV=nRT). Я преобразую температуру в Кельвин только в том случае, если температура находится в celcus, и пользователь не ищет решения для tempeture.

в настоящее время мой код проходит через цикл независимо от того, что вводится, даже если это "Т".

public class Main {

    /**
     * @param args the command line arguments
     */
    //prints string to console
    private static void print(String s) {
        System.out.println(s);
    }

    //all the constants for given R values returns the correct R value
    private static double rValues(String pressure) {
        double R = 0;
        if (pressure.equalsIgnoreCase("atm")) {
            R = 0.082057338;
        } else if (pressure.equalsIgnoreCase("tor")) {
            R = 62.363577;
        } else if (pressure.equalsIgnoreCase("mmHg")) {
            R = 62.36367;
        }
        return R;
    }

    //all of the equations solved for unknown variable
    private static double solve_P(double[] variables, double constant, double temperature) {
        double exitP;
        exitP = (variables[2] * temperature * constant) / variables[1];
        return exitP;
    }

    private static double solve_V(double[] variables, double constant, double temperature) {
        double exitV;
        exitV = (variables[2] * temperature * constant) / variables[0];
        return exitV;
    }

    private static double solve_n(double[] variables, double constant, double temperature) {
        double exitN;
        exitN = (variables[0] * variables[1]) / (constant * temperature);
        return exitN;
    }

    private static double solve_T(double[] variables, double constant) {
        double exitT;
        exitT = (variables[0] * variables[1]) / (constant * variables[2]);
        return exitT;
    }

    public static void main(String[] args) {

        //play again loop
        boolean isRunning = true;
        String playAgain;
        while (isRunning) {

            Scanner keyboard = new Scanner(System.in);//creates scanner

            //introduction
            print("This is an ideal gas law solver");
            print("PV=nRT");

            //what R value to use
            print("what is the pressure measured in?");
            print("atm, tor, or mmmHg");
            print(">");
            String whatPressure;
            whatPressure = keyboard.next();
            double rConstant;
            rConstant = rValues(whatPressure);

            //stored questions
            String[] userQuestions = {"what is the pressure P",
                "what is the volume V",
                "what is the number of moles n"};

            //stores answers in userAnswers
            double[] userAnswers = new double[3];

            print("what variable would you like to solve for?");
            String unknownVariable;
            unknownVariable = keyboard.next();
            System.out.println("solving for " + unknownVariable);

            //converts between celsius and kelvin
            double temperature = 0;
            if (unknownVariable.compareToIgnoreCase("T") == 0) {
                print("what is the temperature in?");
                print("kelvin (K) or celsius (c) ");
                String whatTemperatureUnit;
                whatTemperatureUnit = keyboard.next();
                print("what is the temperature?");
                temperature = keyboard.nextDouble();
                if (whatTemperatureUnit.equalsIgnoreCase("c") || whatTemperatureUnit.equalsIgnoreCase("celsius")) {
                    temperature = temperature + 273.15;
                }
            }
        }
    }
}


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

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

wseng

где же петля ?

Richard MacCutchan

Ваш код работает от начала до конца, но никогда не выдает никаких выходных данных, так как же вы узнаете, работает ли он?

wseng

Было бы лучше, если бы вы обеспечили желаемый выход и текущий выход, который вы имеете.

2 Ответов

Рейтинг:
2

CPallini

Цитата:
в настоящее время мой код проходит через цикл независимо от того, что вводится, даже если это "Т".
Это не ошибка: ваш код является написанный сделать это.


Рейтинг:
1

Member 13770853

Это мой полный код

<pre>package com.company;
import java.util.Scanner;

public class Main {
    //prints string to console
    private static void print(String s) {
        System.out.println(s);
    }

    //all the constants for given R values returns the correct R value
    private static double rValues(String pressure){
        double R = 0;
        if(pressure.equalsIgnoreCase("atm")){
            R = 0.082057338;
        }else if(pressure.equalsIgnoreCase("tor")){
            R = 62.363577;
        }else if(pressure.equalsIgnoreCase("mmHg")){
            R = 62.36367;
        }
        return R;
    }


    //all of the equations solved for unknown variable
    private static double solve_P(double[] variables, double constant, double temperature ){
        double exitP;
        exitP = (variables[2]*temperature*constant)/variables[1];
        return exitP;
    }


    private static double solve_V(double[] variables, double constant, double temperature){
        double exitV;
        exitV =(variables[2]*temperature*constant)/variables[0];
        return exitV;
    }


    private static double solve_n(double[] variables, double constant, double temperature){
        double exitN;
        exitN = (variables[0]*variables[1])/(constant*temperature);
        return exitN;
    }

    private static double solve_T(double[] variables, double constant){
        double exitT;
        exitT = (variables[0]*variables[1])/(constant*variables[2]);
        return exitT;
    }



    public static void main(String[] args) {

        //play again loop
        boolean isRunning = true;
        String playAgain;
        while (isRunning) {

            Scanner keyboard = new Scanner(System.in);//creates scanner

            //introduction
            print("This is an ideal gas law solver");
            print("PV=nRT");

            //what R value to use
            print("what is the pressure measured in?");
            print("atm, tor, or mmmHg");
            print(">");
            String whatPressure;
            whatPressure = keyboard.next();
            double rConstant;
            rConstant = rValues(whatPressure);

            //stored questions
            String[] userQuestions = {"what is the pressure P",
                    "what is the volume V",
                    "what is the number of moles n"};

            //stores answers in userAnswers
            double[] userAnswers = new double[3];

            print("what variable would you like to solve for?");
            String unknownVariable;
            unknownVariable = keyboard.next();
            System.out.println("solving for " + unknownVariable);

            //converts between celsius and kelvin
            double temperature = 0;
            if (unknownVariable.compareToIgnoreCase("T") == 0) {
                print("what is the temperature in?");
                print("kelvin (K) or celsius (c) ");
                String whatTemperatureUnit;
                whatTemperatureUnit = keyboard.next();
                print("what is the temperature?");
                temperature = keyboard.nextDouble();
                if (whatTemperatureUnit


Richard MacCutchan

Пожалуйста, не публикуйте обновления в качестве решений. Удалите это и используйте Улучшить вопрос ссылка выше, чтобы обновить ваш оригинальный пост. И, пожалуйста, добавьте некоторые полезные детали о том, что происходит; не говорите просто "это не работает".