如何用java编写一元二次方程的求根问题

作者&投稿:戏康 (若有异议请与网页底部的电邮联系)
java编写程序求一元二次方程的根~

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Equation {
JLabel l1 = new JLabel("请输入一元二次方程各项的系数:", JLabel.CENTER);
JTextField t1 = new JTextField(10);
JTextField t2 = new JTextField(10);
JTextField t3 = new JTextField(10);
JButton but1 = new JButton("求解");
JButton but2 = new JButton("重置");

public Equation() {
JFrame f = new JFrame();
l1.setFont(new Font("华文行楷", Font.PLAIN, 24));
l1.setForeground(Color.blue);
JLabel l2 = new JLabel("二次项系数:");
JLabel l3 = new JLabel("一次项系数:");
JLabel l4 = new JLabel("常数项 :");
Container c = f.getContentPane();
c.setLayout(new GridLayout(6, 1));
JPanel p2 = new JPanel(new FlowLayout());
JPanel p3 = new JPanel(new FlowLayout());
JPanel p4 = new JPanel(new FlowLayout());
JPanel p5 = new JPanel(new FlowLayout());
JPanel p6 = new JPanel(new FlowLayout());

p2.add(l1);
p3.add(l2);
p3.add(t1);
p4.add(l3);
p4.add(t2);
p5.add(l4);
p5.add(t3);
p6.add(but1);
p6.add(but2);
c.add(p2);
c.add(p3);
c.add(p4);
c.add(p5);
c.add(p6);
f.setTitle("求一元二次方程的解");
f.setBounds(200, 200, 400, 280);
f.setVisible(true);
f.setResizable(false);

// 设置按钮but1的按钮事件
but1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (t1.getText().equals("") | t2.getText().equals("")
| t3.getText().equals("")) {
JOptionPane.showMessageDialog(null, "请输入方程各项的系数!", "警告",
JOptionPane.WARNING_MESSAGE);
}
double a = Double.parseDouble(t1.getText());
double b = Double.parseDouble(t2.getText());
double c = Double.parseDouble(t3.getText());
double m = Math.pow(b, 2) - 4 * a * c;
double n1 = (-b + Math.sqrt(m)) / 2 * a;
double n2 = (-b - Math.sqrt(m)) / 2 * a;
if (m < 0) {
JOptionPane.showMessageDialog(null, "该方程无实根", "提示信息",
JOptionPane.INFORMATION_MESSAGE);
} else if (m == 0) {
JOptionPane.showMessageDialog(null, "该方程有两个相等的实根" + '
'
+ "x1 = x2 = " + n1, "提示信息",
JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "该方程有两个不相等的实根" + '
'
+ "x1 = " + n1 + " " + "x2=" + n2, "提示信息",
JOptionPane.INFORMATION_MESSAGE);
}
}
});
// 设置按钮but2的按钮事件
but2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
t1.setText("");
t2.setText("");
t3.setText("");
}
});
}

public static void main(String args[]) {
Equation e = new Equation();
}
}

import java.util.Scanner;//这个是导入java包,因为你在这后面中用到Scanner类
double a, b, c; // 这里为什么要用double? 用int 可以么?
方程的解不见得全是int吧,用double更准确
Scanner scanner = new Scanner(System.in); //第一个Scanner是类名系统给定的是你要调用的一个类,第二个scanner是变量名,是自己定义的,也就是说你可以把他取成别的名字也行
a = scanner.nextDouble(); // 这三行就完全看不懂了。。
b = scanner.nextDouble();
c = scanner.nextDouble();
//获取用户输入的3个double型的数,前面的Scanner类就是用来获取用户输入的
double delta = b*b - 4*a*c; // delta是什么东西? 可以直接拿过来用的么?
delta同样是自己定义的变量,后面的b*b - 4*a*c是判断方程有几个跟的表达式,这句就是把b*b - 4*a*c的值赋给你自己定义的变量delta。

public class SquareEquation {

double a, b, c;

public void setA(double a) {

this.a = a;

}

public void setB(double b) {

this.b = b;

}

public void setC(double c) {

this.c = c;

}

public double getRootOne() {

double disk = calculateValidDisk();

return (-b + Math.sqrt(disk)) / (2 * a);

}

public double getRootTwo() {

double disk = calculateValidDisk();

return (-b - Math.sqrt(disk)) / (2 * a);

}

private double calculateValidDisk() {

if (a == 0) {

throw new EquationException("不是二次方程", EquationException.NONE_EQUATION);

}

double disk = b * b - 4 * a * c;

if (disk < 0) {

throw new EquationException("没有实根", EquationException.NO_REALROOT);

}

return disk;

}

}

扩展资料

比如 方程是 x平方+3x+2=0;

public class Test

{

public static void main(String []args)

{

double a=1;//二次项系数

double b=3;//一次项系数

double c=2;//常数项

double s=b*b-4*a*c;

if(s<0)

{

System.out.print("b*b-4ac<0,方程无解!");

return;

}

double ss=Math.sqrt(s);

double x1=(-1*b-ss)/(2*a);

double x2=(-1*b+ss)/(2*a);

System.out.println("x1="+x1);

System.out.println("x2="+x2);

}

}

参考资料:百度百科 Java

百度百科 一元二次方程



import java.util.Scanner;

public class 一元二次方程 {

public static void main(String[] args) {

System.out.println("请输入你一元二次方程的a,b,c");

Scanner input=new Scanner(System.in);

int a=input.nextInt();

int b=input.nextInt();

int c=input.nextInt();

double d=b*b-4*a*c;

double e,f;

if (d==0){

System.out.println("这是个完全平方");

e=f=-b/2*a;

System.out.print(e);

}

else if(d<0) {

System.out.println("无效根");

}

else {

System.out.println("这是个不完全平方,需要用求根公式");

double g=Math.sqrt(Math.abs(b));

e=-(b+g)/2*a;

f=-(e);

System.out.println("第一根是"+e);

System.out.println("第二根是"+f);

}

}

}

这是我的运行结果

扩展资料:

利用java编程解决数学上的解方程题,我们需要把方程求解的思路写出来,然后对应到每一步具体的求解步骤上。就比如解一元二次方程,需要我们把解方程的求根公式,判断式写出,最后用代码表示出来就好了。

需要注意的是,java中有特定的包和数学函数去求解数学问题,比如求根号可以用Math.sqrt()函数,求绝对值用Math.abs()函数




首先需要清除数学上的求根公式,再写成java代码。

先创建方程类Fc,属性a,b,c分别代表一元二次方程的系数,两个有参和无参的构造方法Fc,一个求方程实数根的方法getRoot。

最后写main方法,用于测试程序,以下是代码,图片为运行结果截图。

public class Fc {

int a;

int b;

int c;

public Fc() {

super();

}

public Fc(int a, int b, int c) {

super();

this.a = a;

this.b = b;

this.c = c;

}

public String getRoot(){

int m = b*b-4*a*c;

if(m>=0){

double x1 = (-b + Math.sqrt(m))/(2*a);

double x2 = (-b - Math.sqrt(m))/(2*a);

return "x1="+x1+",x2="+x2;

}else{

return "没有实根.";

}

}

public static void main(String[] args) {

Fc fc = new Fc(1,5,6);

System.out.println(fc.getRoot());

}

}

扩展资料:

java中变量的定义:数据类型 变量名,如:int x;就是定义了一个int类型的变量x。如果不定义变量就直接使用,会报“cannot be resolved to a variable”错误,意思是无法解析为变量。

java中的类是一个模板,它描述一类对象的行为和状态,而对象是类的一个实例,有状态和行为,例如定义了一个Cat类,它有属性name和age,有无参构造方法Cat,有方法speak,表示该类的一个行为说话,代码如下:

public class Cat {

String name;

int age;

public Cat() {

super();

}

public void speak(){

System.out.println("喵喵喵!!!");

}

}



错误解析

程序总体思想没有错,不过有一些小问题

1、输出语句中双引号包裹的代表原样输出:

这里需要去掉双引号

2、if语句,不写括号来注明代码块的情况下,只会把条件后一句当做代码块:

这里需要用大括号注明区域:

3、变量错误,输出的j和k为方法内定义,而不是在全局定义,而代码中却在另一个方法中调用:

这明显是调用不到的,不过可以把方法改成无返回值的void,然后在方法内输出值.

       

贴上修改后的代码:

#code:

#out:

拓展内容

java 函数的定义

习惯把函数也叫成方法,都是一个意思;函数是具备特定功能的一段代码块,解决了重复性代码的问题。

为什么要定函数呢?

目的是为了提高程序的复用性和可读性。

函数的格式

修饰符返回值类型函数名(形式参数类型1  参数名1,形式参数类型2  参数名2,形式参数类型3  参数名3......)

{

函数体语句;

return  返回值;

}

(1).修饰符:public 公共的static 静态的

(2).返回值类型:就是函数所实现的功能结果的数据类型。

(3).方法名:自己定义,符合标识符命名规则就行;驼峰命名规则 :单个单词首字母小写,多个单词后面的单词首字母大写。

(4).参数列表:即形式参数列表,用于接收实际参数。

(5).参数类型:参数的数据类型

(6).参数名:即变量名

(7).函数体语句:就是函数要完成的功能

(8).return:用来结束函数

(9).返回值:即这个函数的功能的结果 ,由return带回调用地方。

注意:void 表示不确定返回值类型,不能理解为没有返回值,只是返回值的类型不确定而已;

此外,返回值类型为void时,由于其返回值类型不能确定,故不能定义形式参数变量来接收;

当返回值类型为void时,return可以不写;但是当返回值类型为其他如int  String等时就必须写,否则编译会出错。



public class Fc {
  int a, b, c;

  public void gen() {
    double i;
    double j = 1.0;
    double k = 1.0;
    i = b * b - 4 * a * c;
    if (i >= 0) {
      j = ((-b) + Math.sqrt(i)) / 2 * a;
      k = ((-b) - Math.sqrt(i)) / 2 * a;
    }
    System.out.println(j);
    System.out.println(k);
  }

  public static void main(String[] args) {
    Fc s = new Fc();
    s.a = 1;
    s.b = 5;
    s.c = 6;
    s.gen();
  }
}



如何用Java编写一个万年历
4.输出当月日历表,逢星期六换行*\/import java.util.Scanner;class FindMonthList { public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入年份:"); int year = sc.nextInt(); \/\/年份 if (year < 1) { \/\/判断...

用Java如何编写一个DvD信息管理系统
DVDMgr类 package adminDVD;import java.util.Scanner;public class DVDMgr { DVDSet dvd = new DVDSet();public void setData() { \/\/初始化数据 \/\/int[] state = dvd.state;dvd.initial();} public void startMenu() { System.out.println("欢迎使用 MiniDVD Mgr 1.0");System.out....

利用Java的字符串处理技术,编写一个验证Email地址合法性的程序_百度...
实现原理,实际上就是输入一个字符串,之后通过正则表达式验证此字符串是否符合邮箱的格式规范,通过以下工具类即可:import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegisterCheck { \/** * 验证输入的邮箱格式是否符合 * @param email * @return 是否合法 ...

用JAVA编写一个程序,对数组中每个元素赋值,然后按逆序输出。_百度知 ...
public class ArraySort { \/ param args \/ public static void main(String[] args) { int[] a = { 12, 2, 45, 23, 9, 88, 33, 23, 22, 5, 4, 4, 5, 1, 9, 7, 2,7, 8, 0 };ArraySort.bubbleSort(a);} \/ 冒泡排序。从大到小排序。 param source return \/ public ...

java用循环编写一个计数程序输入几个数字直到输入0为止,计算输入的这 ...
import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in);int sum = 0;int count = 0;while(true){ int num = sc.nextInt();if(num == 0) break;sum += num;count++;} System.out.println("平均值:"+sum*1.0\/...

用java编写 1+2+3+ +100 的程序
\/\/有窗口的 1+2+3+...+到某一个数import java.awt.Color;import java.awt.Font;import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing....

用JAVA编写一个计算机
expression=expression.replaceAll("\\\\s+", "").replaceAll("^\\\\((.+)\\\\)$", "$1");String checkExp="\\\\d";String minExp="^((\\\\d+(\\\\.\\\\d+)?)|(\\\\[\\\\-\\\\d+(\\\\.\\\\d+)?\\\\]))[\\\\+\\\\-\\\\*\\\\\/]((\\\\d+(\\\\.\\\\d+)?)|(\\\\[\\\\-\\\\d+(\\\\.\\\\d+)?\\\\]))...

使用java编写:字符串处理:写一个函数,返回字符串按空格分割,倒置的结 ...
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class ReverseWord { public static void main(String[] args){ InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);System.out.println("输入单词...

用java编写一个程序,分别统计并输出文本文件中元音字母a,e,i,o,u...
public static void main(String[] args) throws Exception { File f = new File("C:\\\\Users\\\\史文天\\\\Desktop\\\\新建文本文档1.txt");InputStream in = new FileInputStream(f);InputStreamReader reader = new InputStreamReader(in);\/\/ 这句话不要忽略,它对你以后编写高性能IO流有至关...

用java编写一个程序 急求
import java.util.Scanner;public class Book { private String bookname;private String bookno;private double bookprice;private int bookamount;public Book(String bookname, String bookno, double bookprice, int bookamount) { super();this.bookname = bookname;this.bookno = bookno;this....

政和县19227442546: java编程 求解一元二次方程:ax^2+bx+c=0编写一个程序,求解一元二次方程:ax^2+bx+c=0 .参数a,b及c从命令行输入.提示:需要用到 java.lang.Math 类,... -
劳宣露畅:[答案] 可以用Scanner 逻辑上应该没错误 import java.util.Scanner; public class Test2 { public static String x(int a,int b,int c){ int x = b*b-4*a*c; double d; if(x

政和县19227442546: 求用Java语言编写求一元二次方程的编写方法.不要那种随意赋值的 -
劳宣露畅: //比如 方程是 x平方+3x+2=0;public class Test { public static void main(String []args) { double a=1;//二次项系数 double b=3;//一次项系数 double c=2;//常数项 double s=b*b-4*a*c; if(s { System.out.print("b*b-4ac return; } double ss=Math.sqrt(s); ...

政和县19227442546: java求一元二次方程的根 -
劳宣露畅: import java.util.Scanner; public class Test30009{public static void main(String args[]){int repeat, ri;int a,b,c,d;double x1 = 0,x2;Scanner in=new Scanner(System.in);repeat=in.nextInt();for(ri = 1; ri <= repeat; ri++){a=in.nextInt();b=in.nextInt();...

政和县19227442546: 一元二次方程,Java语言编程 -
劳宣露畅: int x=接收输入的值; int a=接收输入的值; int b=接收输入的值; int c=接收输入的值; int axx=a*x*x; int bx=b*x; int s=0; if(axx>=0&b>=0&c>=0) { s=axx+bx+c; }else if(axx>=0&bx<=0&c>=0) { s=axx-bx+c; }else if(axx>=0&bx<=0&c<=0) { s=axx-bx-c; ...

政和县19227442546: 用JAVA写一个求解一元二次方程的类 -
劳宣露畅: public double A(double db){if(db<0){double dou=-db;double res = Math.sqrt(dou);System.out.println("虚根:"+ -res);return -res;}double res = Math.sqrt(db);System.out.println("实根:"+ res);return res;}

政和县19227442546: java编程 求解一元二次方程:ax^2+bx+c=0 -
劳宣露畅: 可以用Scanner 逻辑上应该没错误 import java.util.Scanner; public class Test2 { public static String x(int a,int b,int c){ int x = b*b-4*a*c; double d; if(x<0){ return "无解"; }else{ d = Math.pow(x, 0.5); return (-b-d)/(2*a)+":"+(-b+d)/(2*a); } } public ...

政和县19227442546: 用java 编写一程序,求解一元二次方程:aX2+bX+c=0.参数a、b及c从命令行做参数输入 java -
劳宣露畅: 以下程序在jdk5.0测试通过 import java.util.Scanner;public class Test { //一元二次方程式解法private static X fx (int a,int b,int c) throws Exception{X x = new X();double m = b*b - 4*a*c;if(m>=0){x.x1=(-1*b+Math.sqrt(m))/(2*a);x.x2=(-1*b-Math....

政和县19227442546: 如何用java编写一元二次方程的代码? -
劳宣露畅: 网上一搜一大堆啊. public class Fc {int a, b, c; public void gen() {double i;double j = 1.0;double k = 1.0;i = b * b - 4 * a * c;if (i >= 0) {j = ((-b) + Math.sqrt(i)) / 2 * a;k = ((-b) - Math.sqrt(i)) / 2 * a;}System.out.println(j);System.out.println(k);} ...

政和县19227442546: 怎么样用Java编一元二次方程求解,其中要加入复数解. -
劳宣露畅: import java.util.*; class First { public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入一元二次方程的三个系数a,b,c的值"); System.out.println("请输入系数a的值"); double a = sc....

政和县19227442546: 用Java编写一程序,求解一元二次方程:aX2+bX+c=0.参数a、b及c从命令行做参数输入 -
劳宣露畅: public static main(String[] arg0){if(arg0== null || arg0.length == 0){System.out.println("请输入参数:a,b,c");System.exit(0);}for(int i=0;i<arg0.length;i++){try {Float.parseFloat(arg0[i]);} Catch(Exception e){System.out.println("请输入数...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网