Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 二次公式?_Java_Jcreator - Fatal编程技术网

Java 二次公式?

Java 二次公式?,java,jcreator,Java,Jcreator,我必须做一个二次公式。当我构建文件时,它没有错误,但是当我运行项目时,输出是Nan。我知道这不是一个数字,但我不知道如何解决它 import java.io.*; class cuadratica { public static void main(String [] args) throws IOException { cuadra obj=new cuadra(); System.out.println("5. Calcular la ec

我必须做一个二次公式。当我构建文件时,它没有错误,但是当我运行项目时,输出是Nan。我知道这不是一个数字,但我不知道如何解决它

import java.io.*;
class cuadratica 
{
    public static void main(String [] args) throws IOException
    {
        cuadra obj=new cuadra();
        System.out.println("5.  Calcular la ecuación cuadrática (ax^2 + bx + c) ");
        obj.cal();
    }
 }

 class cuadra
 {
     void cal() throws IOException
     {
         String x;
         int a;
         String w;
         int b;
         String t;
         int c;
         int g;
         int f;
         double num3;
         double num2;
         double q;
         InputStreamReader isr = new InputStreamReader(System.in);
         BufferedReader br = new BufferedReader(isr);
         System.out.println("Inserte el primero numero (ax^2)" );
         x=br.readLine();
         a=Integer.parseInt(x);
         System.out.println("Inserte el segundo numero (bx)");
         w=br.readLine();
         b=Integer.parseInt(w);
         System.out.println("Inserte el tercer numero (c)");
         t=br.readLine();
         c=Integer.parseInt(t);
         g=(b*b)-(4*a*c);
         q=Math.sqrt(g);
         if (a!=0||g>0)
         {
             num2 = (-b+q)/(2*a);
             num3 = (-b-q)/(2*a);
             System.out.println("La raiz son "+num2+" y "+num3);
         }
         else 
         {
             System.out.println("error");
         }
     }
}

当用实系数求解二次方程ax^2+bx+c=0时,方程的根将属于以下类别之一:

  • 两个实根
  • 重复实根
  • 双复根

  • 我已经试过你的程序,它为
    a=1,b=2,c=1
    的情况给出了正确的解决方案,但是
    a=1,b=1,c=1
    的情况下给出了
    NaN
    。为了修复逻辑错误,必须先检查判别式
    b^2-4ac
    (代码中的变量
    g
    )是否为非负,然后再求平方根(当判别式为负时,它对应于上述情况3)。否则,当取负数的平方根时,您将得到
    NaN

    搜索
    Scanner
    类。是的,您是对的,我删除了q=Math.sqrt(g);并添加公式部分y更改:如果(a!=0 | | g>0)为(a!=0&&g>0),则现在项目运行