要求如下,请问该怎么实现,卡在运算过程中不能出现负数和分数这里了
实现了 https://blog.csdn.net/u013360850/article/details/79685769
1.多来些判断而已, 是减法 你考虑判断一下被减数是否大于减数; 是除法, 可以考虑先随机生成两个数相乘, 然后把积当被除数.
2.程序运行的时候 把结果是分数或负数的 忽略掉,重新生成算式.
用随机数, 加计算结果判定, 然后将式子打印出来, 即可, 类似的东西比如https://github.com/iAlios/Tanuki, 它好像实现了式子计算的基础过程, 然后将其结果加以判定, 生成想要的结果即可
import java.text.DecimalFormat;
import java.util.Scanner;
public class Zhidao {
public static void main(String[] args) {
String condition = "";
Zhidao zhidao = new Zhidao();
do{
Scanner scanner = new Scanner(System.in);
try{
System.out.print("请输入第一个数:");
double x = scanner.nextDouble();
System.out.print("请输入第二个数:");
double y = scanner.nextDouble();
System.out.print("请输入运算符:");
String s = scanner.next();
char z = s.charAt(0);
zhidao.yunsuan(x, y, z);
}catch(Exception e){
System.out.println("请输入正确的数据!");
}
System.out.print("是否继续?continue:继续,任意字符:结束");
condition = scanner.next();
}while("continue".equals(condition));
}
public static void yunsuan(double x,double y,Character z){
DecimalFormat r=new DecimalFormat();
r.applyPattern("#0.00");
if(z.equals('+')){
System.out.println(x+"+"+y+"=" + r.format((x+y)));
} else if(z.equals('-')){
System.out.println(x+"-"+y+"=" + r.format((x-y)));
} else if(z.equals('*')){
System.out.println(x+"*"+y+"=" + r.format((x*y)));
} else if(z.equals('/')){
if(y==0){
System.out.println("被除数不能为0");
} else{
System.out.println(x+"/"+y+"=" + r.format((x/y)));
}
}else{
System.out.println("无法识别改运算符");
}
}
}
/*
* 1.获得输入参数n,每生成一个合格的算式,i++,直到i = n
* 2.对于某个算式,随机生成m个运算符,然后按每个运算符,逐个拼接字符串
* 3.分别写出加减乘除的方法逻辑
* */
string expression;
int Add(int integer1, int interger2);
//减法,传入随机生成的两个整数(或计算得的中间结果),大的当被减数,小的当减数,生成减法的式子.
int Sub(int interger1, int interger2)
{
int result = 0;
if (interger1 > interger2)
{
result = interger1 - interger2;
expression = interger1 + " - " + interger2;
}
else
{
result = interger2 - interger1;
expression = interger1 + " - " + interger2;
}
return result;
}
int Mul(int interger1, int interger2);
//除法,传入两个整数,把积当被除数,其中一个当除数,另一个当商,生成除法的式子.
int Div(int interger1, int interger2)
{
int num1 = interger1 * interger2;
expression = num1 + "/" + interger1;
return interger2;
}