從鍵盤格式化輸入
阿新 • • 發佈:2018-11-07
完成一個 java application應用程式,把已知字串(在程式中賦初值或通過鍵盤輸入) “a=3.2&b=20&c=1.1” 作為一元二次方程 ax2+bx+c=0 的a、b、c三個引數值的取值描述,並求解此方程的根。
主要思路是利用String類的index方法獲得a,b,c在輸入字串中的位置,再利用substring擷取,最後轉換為double型。
import java.util.*;
public class sp131 {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.println("輸入格式為a=3.2&b=20&c=1.1\nPlease input:");
String name = in.nextLine();
//獲取a所對應數字兩邊的=和&的索引,以擷取數字
int indexa1 = name.indexOf("=");
int indexa2 = name.indexOf("&");
//獲取b,同上
int indexb1 = name. indexOf("=",name.indexOf("=")+1);
int indexb2 = name.indexOf("&",name.indexOf("&")+1);
//獲取c,同上
int indexc1 = name.indexOf("=",name.indexOf("=",name.indexOf("=")+1)+1);
int indexc2 = name.length();
//通過index擷取數字
String a = name.substring(indexa1+ 1, indexa2);
String b = name.substring(indexb1+1, indexb2);
String c = name.substring(indexc1+1, indexc2);
//擷取的數字為字串,將它們轉換為double型別
double a1 = Double.parseDouble(a);
double b1 = Double.parseDouble(b);
double c1 = Double.parseDouble(c);
if((Math.pow(b1,2)-4*a1*c1)<0){ //Δ<0無解
System.out.println("方程無解");
}
else{
if((Math.pow(b1,2)-4*a1*c1)==0){ //Δ=0有唯一解
double x= (-b1/(2*a1));
System.out.println("方程有唯一解:" + x);
}
else{ //Δ>0有兩個不同解
double x1= ((-b1+Math.sqrt(Math.pow(b1,2)-4*a1*c1))/(2*a1));
double x2= ((-b1-Math.sqrt(Math.pow(b1,2)-4*a1*c1))/(2*a1));
System.out.println("方程有兩個解:" + x1+"和"+x2);
}
}
}
}
結果