要求:
1.后台输入数字n(1-100),输出n道四则运算并计算结果;
2.每道四则运算包含任意两种符号(+,-,*,/);
3.随机产生运算符号、运算数字。(Math.Random());
附加:
1.运算过程中不能产生负数;
2.后台输入n时,如何判断是否满足要求,如果不满足如何进行提示。 ( 如果输入a、10000、-3?不满足要求怎么办?)
法一:
package java_test;
/**
* @author : Liangll
* @time : 2018/4/6 22:51
*/
import java.util.Scanner;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.util.Random;
public class TestRandom {
public static void main(String[] args) throws Exception{
try{
System.out.print("请输出题目总数(n的范围为1-100):");
Scanner input = new Scanner(System.in);
int n = input.nextInt();
if(n < 0 || n > 100){
System.out.println("输入错误");
return;
}
for(int i = 0;i < n;i++){
//运算符随机数组
char[] c ={'+','-','*','/'};
//随机函数
Random random = new Random();
//得到一个随机运算符下标
int idx1 = random.nextInt(c.length);
//得到一个随机运算符下标
int idx2 = random.nextInt(c.length);
// 拼接运算表达式
String str = "" + random.nextInt(100) + c[idx1] + random.nextInt(100) + c[idx2] + random.nextInt(100);
// 输出表达式
System.out.print(str + " = ");
//创建一个ScriptEngineManager对象
ScriptEngineManager manager = new ScriptEngineManager();
//通过ScriptEngineManager获得ScriptEngine
ScriptEngine engine = manager.getEngineByName("js");
String resultStr = String.valueOf(engine.eval(str));
double result = Double.parseDouble(resultStr);
if(result < 0 ) {
System.out.println("运行结果不能出现负数");
continue;
}
//用ScriptEngine的eval方法执行脚本
System.out.println(engine.eval(str));
}
}
catch (Exception e) {
System.out.println("输入错误!");
}
}
}
法二:(来自同学的另一种解法)
package java_test;
/**
* @author : Liangll
* @time : 2018/5/6 15:31
*/
import java.util.Scanner;
public class TestRandom3 {
public static void main(String[] args) throws Exception {
System.out.print("请输入您想要的四则运算的个数:");
try{
Scanner input = new Scanner(System.in);
int s = input.nextInt();
for(int i = 1;i <= s;i++){
int num1 = (int)(Math.random() * 10) + 1;
int num2 = (int)(Math.random() * 10) + 1;
int num3 = (int)(Math.random() * 10) + 1;
int n = (int)(Math.random() * 4);
if(n == 0){
switch((int)(Math.random() * 4)){
case 0:
int ans1 = num1 + num2 + num3;
System.out.println(num1 + " + " + num2 + " + " + num3 + " = " + ans1);
break;
case 1:
int ans2 = num1 + num2 - num3;
if(ans2 < 0)
i--;
else
System.out.println(num1 + " + " + num2 + " - " + num3 + " = " + ans2);
break;
case 2:
int ans3 = num1 + num2 * num3;
System.out.println(num1 + " + " + num2 + " * " + num3 + " = " + ans3);
break;
case 3:
int ans4 = num1 + num2 / num3;
System.out.println(num1 + " + " + num2 + " / " + num3 + " = " + ans4);
break;
}
}
else if(n == 1){
switch((int)(Math.random() * 4)){
case 0:
int ans1 = num1 - num2 + num3;
if(ans1 < 0)
i--;
else
System.out.println(num1 + " - " + num2 + " + " + num3 + " = " + ans1);
break;
case 1:
int ans2 = num1 - num2 - num3;
if(ans2 < 0)
i--;
else
System.out.println(num1 + " - " + num2 + " - " + num3 + " = " + ans2);
break;
case 2:
int ans3 = num1 + num2 * num3;
if(ans3 < 0)
i--;
else
System.out.println(num1 + " - " + num2 + " * " + num3 + " = " + ans3);
break;
case 3:
int ans4 = num1 + num2 / num3;
if(ans4 < 0)
i--;
else
System.out.println(num1 + " - " + num2 + " / " + num3 + " = " + ans4);
break;
}
}
else if(n == 2){
switch((int)(Math.random() * 4)){
case 0:
int ans1 = num1 / num2 + num3;
System.out.println(num1 + " / " + num2 + " + " + num3 + " = " + ans1);
break;
case 1:
int ans2 = num1 / num2 - num3;
if(ans2 < 0)
i--;
else
System.out.println(num1 + " / " + num2 + " - " + num3 + " = " + ans2);
break;
case 2:
int ans3 = num1 / num2 * num3;
System.out.println(num1 + " / " + num2 + " * " + num3 + " = " + ans3);
break;
case 3:
int ans4 = num1 / num2 / num3;
System.out.println(num1 + " / " + num2 + " / " + num3 + " = " + ans4);
break;
}
}
else {
switch ((int)(Math.random() * 4)) {
case 0:
int ans1 = num1 * num2 + num3;
System.out.println(num1 + " * " + num2 + " + " + num3 + " = " + ans1);
break;
case 1:
int ans2 = num1 * num2 - num3;
if (ans2 < 0)
i--;
else
System.out.println(num1 + " * " + num2 + " - " + num3 + " = " + ans2);
break;
case 2:
int ans3 = num1 * num2 * num3;
System.out.println(num1 + " * " + num2 + " * " + num3 + " = " + ans3);
break;
case 3:
int ans4 = num1 * num2 / num3;
System.out.println(num1 + " * " + num2 + " / " + num3 + " = " + ans4);
break;
}
}
}
}catch(Exception e){
throw new Exception("你输入的类型不对,请重新运行并输入");
}
}
}