我是 Java 世界的初学者,我被分配编写代码来求系数,然后完成平方。我已经花了几个小时研究该怎么做,但毫无结果(再次,初学者),任何帮助将不胜感激。
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);
}
}
这是我收到的错误
c:\cs\program2>javac Squares.java
Squares.java:41: error: unexpected type
System.out.println(a*Math.pow(x, 2)+b*x+c=0);
^
required: variable
found: value
1 error
此示例给出了所需的输出
> 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
最佳答案
因此,完成平方通常用于寻找二次方程的 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
第四步:重写左侧(作为正方形)
(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
}
编辑:将输出更新为请求的格式并提供更完整的代码框架。
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)));
}
}
注意:我强烈建议您在复制并粘贴上述代码之前尝试理解此代码背后的数学原理。
关于java - 初学者在 Java 中编写完成正方形时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39339373/