2013-03-21 2 views
0

Я пробовал создавать коды для решения квадратичной формулы, но мне удалось создать ее только для конкретной формулы. Есть ли способ, которым я могу предоставить переменные a, b, c по запросу пользователя, тогда решение распечатывается? Программа также отказывается запускать в командной строке, но может работать в eclipse. Что может быть проблемой?пользовательский ввод для создания java-программы

Вот оно.

public class Equationsolver { 

    public static void main(String[] args) { 
    double a, b, c; 
    a = 2; 
    b = 6; 
    c = 4; 

    double disc = Math.pow(b,2) - 4*a*c; 
    double soln1 = (-b + Math.sqrt(disc))/(2*a) ; 
    double soln2 = (-b - Math.sqrt(disc))/(2*a); 
    if (disc >= 0) { 
     System.out.println("soln1 = " + soln1); 
     System.out.println("soln2 = " + soln2); 
    }else{ 
     System.out.println("equation has no real roots"); 
    } 

    } 

} 
+0

1. Вы компилировать? 2. добавили ли вы каталог с .class-файлами в classpath? если либо false, то проблема –

+0

Я сделал все это. но моя основная проблема - пользовательский ввод переменных. Сейчас я могу изменить переменные в eclipse, а не на выходе. Какие-либо предложения? – 2013-03-21 17:26:59

+0

Это только я придирчивый, но вы должны рассчитать диск. Затем проверьте, является ли это GEQ 0. Если он затем вычисляет soln1 и ​​soln2, а затем печатает соответственно. Вы делаете ненужные вычисления, если диск LT 0. – Franklin

ответ

5

Один из возможных способов ввода данных пользователя - использовать параметр String [] args. String [] args содержит значение, передаваемое программе, когда вы его выполнили, как java -jar program.jar arg1 arg2 arg3.

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

Вот немного кода, который может помочь, обратите внимание, что я не добавлял проверки и вам потребуется больше проверку, чтобы убедиться, что вы дезинфицировать ввод данных пользователем:

public class Equationsolver { 

    public static void main(String[] args) { 
    double a, b, c; 
    a = Double.parseDouble(args[0]); //Here it will get the first argument pass to the program 
    b = Double.parseDouble(args[1]); 
    c = Double.parseDouble(args[2]); 

    double disc = Math.pow(b,2) - 4*a*c; 
    double soln1 = (-b + Math.sqrt(disc))/(2*a) ; 
    double soln2 = (-b - Math.sqrt(disc))/(2*a); 
    if (disc >= 0) { 
     System.out.println("soln1 = " + soln1); 
     System.out.println("soln2 = " + soln2); 
    }else{ 
     System.out.println("equation has no real roots"); 
    } 

    } 

} 

EDIT: Вы вероятно, придется изменить свой код, чтобы адаптироваться к тому, что теперь ab и c, возможно, не так, как вы думали.

3

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

Scanner in = new Scanner(System.in); 
double a = in.nextDouble(); 
double b = in.nextDouble(); 
double c = in.nextDouble(); 
Смежные вопросы