初学者在Java中完成正方形时遇到的困难
我是Java领域的初学者,我被指派编写代码来求系数,然后完成平方运算。我已经花了几个小时研究该怎么做,但没有结果(还是初学者),如果有任何帮助,我将不胜感激初学者在Java中完成正方形时遇到的困难,java,math,Java,Math,我是Java领域的初学者,我被指派编写代码来求系数,然后完成平方运算。我已经花了几个小时研究该怎么做,但没有结果(还是初学者),如果有任何帮助,我将不胜感激 import java.util.Scanner; // Declare class public class Squares { // Main method of class. Execution starts public static void main(String[]
import java.util.Scanner;
// Declare class
public class Squares
{
// Main method of class. Execution starts
public static void main(String[] args)
{
// Declare variables
double a, b, c;
char x = 'x';
// Print name
System.out.println("Program 2 (Complete the Square) by <your name> \n");
// Create scanner
Scanner scan = new Scanner(System.in);
// Print prompt for variable a
System.out.println("Enter value for a, a=");
// Set a to input value
a = Double.parseDouble(scan.nextLine());
System.out.println("Enter value for b, b=");
b = Double.parseDouble(scan.nextLine());
System.out.println("Enter value for c, c=");
c = Double.parseDouble(scan.nextLine());
System.out.println(a*Math.pow(x, 2)+b*x+c=0);
}
}
该示例给出了所需的输出
> java Program2
Program 2 (Complete the Square) by <your name>
Enter a: 1
Enter b: 2
Enter c: 0
01.0*x^2 + 2.0*x + 0.0 = 0
01.0*(x + 1.0)^2 – 1.0 = 0
>java程序2
程序2(完成正方形)由
输入a:1
输入b:2
输入c:0
01.0*x^2+2.0*x+0.0=0
01.0*(x+1.0)^2–1.0=0
因此,完成平方运算通常用于找到二次方程的x截距值
假设你有三个系数,a,b,c
s.t.ax^2+bx+c=0
。
您需要找到使上述等式为真的x
值
一种方法是使用二次方程,但您希望使用完成平方法
您需要一种从ax^2+bx+c=0
到(x+m)^2=n
的方法,很容易找到x=-m+sqrt(n)
或x=-m-sqrt(n)
在我给出任何代码之前,我会在纸上给你做这件事的步骤
对于任何数量(x+a)^2=x^2+2ax+a^2
,此方法将非常有用
假设您给定:a、b、c
步骤1:规范化系数,使a=1
(将a、b、c
除以a
)
此步骤之所以有效,是因为ax^2+bx+c=0
相当于x^2+(b/a)x+c/a=0
步骤2:将标准化的c
移动到等式的另一侧。
x^2+bx=-c
第三步:将(b/2)^2添加到等式的两侧
x^2+bx+(b/2)^2=-c+(b/2)^2
步骤4:重写左侧(作为正方形)
(x+b/2)^2=-c+(b/2)^2
步骤5:求解x
x=-b/2+/-sqrt(-c+(b/2)^2)
现在是代码:如果存在任何实值截取,第一部分实际上会查找x
的值
public static void complete_square(double a, double b, double c) {
b /= a;
c /= a;
c *= -1;
c += (b/2)*(b/2);
if (c < 0){
System.err.println("Error: no real valued roots");
return;
}
if (c == 0){
System.out.format("X = %f", -b/2); // solution (only 1 distinct root)
return;
}
System.out.format("X = %f", -b/2 + sqrt(c)); // solution 1
System.out.format("X = %f", -b/2 - sqrt(c)); // solution 2
}
public static void complete_square(双a、双b、双c){
b/=a;
c/=a;
c*=-1;
c+=(b/2)*(b/2);
if(c<0){
System.err.println(“错误:无实值根”);
返回;
}
如果(c==0){
System.out.format(“X=%f”,-b/2);//解决方案(仅1个不同的根)
返回;
}
System.out.format(“X=%f”,-b/2+sqrt(c));//解决方案1
System.out.format(“X=%f”,-b/2-sqrt(c));//解决方案2
}
编辑:将输出更新为请求的格式,并提供更完整的代码框架
import java.util.Scanner;
import Java.lang.Math;
public class Squares {
public static void main(String args[]){
// Do your header output and input to get a,b,c values
// Print the input equation. Uses format to "pretty print" the answer
// %s - expects a string and %c expects a character
System.out.format("%s*x^2 %c %s*x %c %s = 0\n",
Double.toString(a),
(b < 0 ? '-' : '+'), // ternary operator. Select '-' if b is negative and '+' if b is positive
Double.toString(Math.abs(b)),
(c < 0 ? '-' : '+'),
Double.toString(Math.abs(c)));
complete_square(a, b, c);
}
public static void complete_square(double a, double b, double c) {
b /= a;
c /= a;
a /= a;
c -= (b/2)*(b/2);
System.out.format("%s*(x %c %s)^2 %c %s = 0",
Double.toString(a),
(b < 0 ? '-' : '+'),
Double.toString(Math.abs(b/2)),
(c < 0 ? '-' : '+'),
Double.toString(Math.abs(c)));
}
}
import java.util.Scanner;
导入Java.lang.Math;
公共类广场{
公共静态void main(字符串参数[]){
//执行标题输出和输入以获得a、b、c值
//打印输入公式。使用格式“漂亮地打印”答案
//%s-需要一个字符串,%c需要一个字符
System.out.format(“%s*x^2%c%s*x%c%s=0\n”,
双。toString(a),
(b<0?'-':'+'),//三元运算符。如果b为负,则选择'-',如果b为正,则选择'+'
Double.toString(Math.abs(b)),
(c<0?'-':'+),
Double.toString(Math.abs(c));
完成方(a、b、c);
}
公共静态空白完整方格(双a、双b、双c){
b/=a;
c/=a;
a/=a;
c-=(b/2)*(b/2);
System.out.format(“%s*(x%c%s)^2%c%s=0”,
双。toString(a),
(b<0?'-':'+),
双.toString(数学abs(b/2)),
(c<0?'-':'+),
Double.toString(Math.abs(c));
}
}
注意:我强烈建议您在复制和粘贴上述代码之前,尝试理解此代码背后的数学知识。因此,完成平方运算通常用于找到二次方程x截距值的方法 假设你有三个系数,
a,b,c
s.t.ax^2+bx+c=0
。
您需要找到使上述等式为真的x
值
一种方法是使用二次方程,但您希望使用完成平方法
您需要一种从ax^2+bx+c=0
到(x+m)^2=n
的方法,很容易找到x=-m+sqrt(n)
或x=-m-sqrt(n)
在我给出任何代码之前,我会在纸上给你做这件事的步骤
对于任何数量(x+a)^2=x^2+2ax+a^2
,此方法将非常有用
假设您给定:a、b、c
步骤1:规范化系数,使a=1
(将a、b、c
除以a
)
此步骤之所以有效,是因为ax^2+bx+c=0
相当于x^2+(b/a)x+c/a=0
步骤2:将标准化的c
移动到等式的另一侧。
x^2+bx=-c
第三步:将(b/2)^2添加到等式的两侧
x^2+bx+(b/2)^2=-c+(b/2)^2
步骤4:重写左侧(作为正方形)
(x+b/2)^2=-c+(b/2)^2
步骤5:求解x
x=-b/2+/-sqrt(-c+(b/2)^2)
现在是代码:如果存在任何实值截取,第一部分实际上会查找x
的值
public static void complete_square(double a, double b, double c) {
b /= a;
c /= a;
c *= -1;
c += (b/2)*(b/2);
if (c < 0){
System.err.println("Error: no real valued roots");
return;
}
if (c == 0){
System.out.format("X = %f", -b/2); // solution (only 1 distinct root)
return;
}
System.out.format("X = %f", -b/2 + sqrt(c)); // solution 1
System.out.format("X = %f", -b/2 - sqrt(c)); // solution 2
}
public static void complete_square(双a、双b、双c){
b/=a;
c/=a;
c*=-1;
c+=(b/2)*(b/2);
if(c<0){
System.err.println(“错误:无实值根”);
返回;
}
如果(c==0){
System.out.format(“X=%f”,-b/2);//解决方案(仅1个不同的根)
返回;
}
System.out.format(“X=%f”,-b/2+sqrt(c));//解决方案1
System.out.format(“X=%f”,-b/2-sqrt(c));//解决方案2
}
编辑:将输出更新为请求的格式,并提供更完整的代码框架
import java.util.Scanner;
import Java.lang.Math;
public class Squares {
public static void main(String args[]){
// Do your header output and input to get a,b,c values
// Print the input equation. Uses format to "pretty print" the answer
// %s - expects a string and %c expects a character
System.out.format("%s*x^2 %c %s*x %c %s = 0\n",
Double.toString(a),
(b < 0 ? '-' : '+'), // ternary operator. Select '-' if b is negative and '+' if b is positive
Double.toString(Math.abs(b)),
(c < 0 ? '-' : '+'),
Double.toString(Math.abs(c)));
complete_square(a, b, c);
}
public static void complete_square(double a, double b, double c) {
b /= a;
c /= a;
a /= a;
c -= (b/2)*(b/2);
System.out.format("%s*(x %c %s)^2 %c %s = 0",
Double.toString(a),
(b < 0 ? '-' : '+'),
Double.toString(Math.abs(b/2)),
(c < 0 ? '-' : '+'),
Double.toString(Math.abs(c)));
}
}
imp