2013-06-02 3 views
1

Решая квадратное уравнениеСоздать программу Java для решения квадратных уравнений

Я следующий записанный до сих пор. Я не уверен, о том, как ввести второй метод

public static void main(string args[]){ 

} 

public static double quadraticEquationRoot1(int a, int b, int c)(){ 

} 

if(Math.sqrt(Math.pow(b, 2) - 4*a*c) == 0) 
{ 
    return -b/(2*a); 
} else { 
    int root1, root2; 
    root1 = (-b + Math.sqrt(Math.pow(b, 2) - 4*a*c))/(2*a); 
    root2 = (-b - Math.sqrt(Math.pow(b, 2) - 4*a*c))/(2*a); 
    return Math.max(root1, root2); 
} 

} 
+0

Почему вернуть максимум корней? Почему не массив, содержащий оба корня? – ncmathsadist

+0

http://www.hubberspot.com/2012/05/how-to-solve-simple-quadratic-equation.html –

ответ

5

Во-первых, ваш код не будет компилироваться - у вас есть дополнительный } после начала public static double quadraticEquationRoot1(int a, int b, int c)().

Во-вторых, вы не ищете правильные типы ввода. Если вы хотите ввести тип double, убедитесь, что вы объявили метод соответствующим образом. Также будьте осторожны с объявлением вещей как int, когда они могут быть удвоены (например, root1 и root2).

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

И, наконец, для решения вашего первоначального вопроса: просто создайте отдельный метод и используйте Math.min() вместо Math.max().

Итак, повторим в коде:

public static void main(string args[]){ 

} 

//Note that the inputs are now declared as doubles. 
public static double quadraticEquationRoot1(double a, double b, double c)(){  
    double root1, root2; //This is now a double, too. 
    root1 = (-b + Math.sqrt(Math.pow(b, 2) - 4*a*c))/(2*a); 
    root2 = (-b - Math.sqrt(Math.pow(b, 2) - 4*a*c))/(2*a); 
    return Math.max(root1, root2); 
} 

public static double quadraticEquationRoot2(double a, double b, double c)(){  
    //Basically the same as the other method, but use Math.min() instead! 
} 
3

Ну почему бы вам не попробовать использовать те же самые точные алгоритмы, но затем использовать Math.min в вашем возвращении заявления?

Также обратите внимание, что вы не принимаете во внимание, является ли отрицательный параметр $ b $ в вашем первом операторе if. Другими словами, вы просто возвращаете $ -b/2a $, но вы не проверяете, является ли $ b $ отрицательным, если это не так, это на самом деле меньший из двух корней не больше. Извините! Я неправильно истолковал происходящее xD

+0

@Maesumi Я думал совершенно ненадлежащим образом, мне очень жаль! Помогает ли первое заявление? – DanZimm

+0

Да, имеет смысл просто использовать Math.min. Я не уверен, что спрашивает OP. –

+0

@Maesumi oop не понял, что вы не были OP, хе-хе – DanZimm

0
package QuadraticEquation; 

import javax.swing.*; 

public class QuadraticEquation { 
    public static void main(String[] args) { 
     String a = JOptionPane.showInputDialog(" Enter operand a : "); 
     double aa = Double.parseDouble(a); 
     String b = JOptionPane.showInputDialog(" Enter operand b : "); 
     double bb = Double.parseDouble(b); 
     String c = JOptionPane.showInputDialog(" Enter operand c : "); 
     double cc = Double.parseDouble(c); 
     double temp = Math.sqrt(bb * bb - 4 * aa * cc); 
     double r1 = (-bb + temp)/(2*aa); 
     double r2 = (-bb -temp)/(2*aa); 
     if (temp > 0) { 
      JOptionPane.showMessageDialog(null, "the equation has two real roots" +"\n"+" the roots are : "+ r1+" and " +r2); 

     } 
     else if(temp ==0) { 
      JOptionPane.showMessageDialog(null, "the equation has one root"+ "\n"+ " The root is : " +(-bb /2 * aa)); 

     } 

     else{ 

      JOptionPane.showMessageDialog(null, "the equation has no real roots !!!"); 
     } 
    }   
} 
Смежные вопросы