除法运算结果要四舍五入还不能为零,四舍五入总运行不出来
一百道四则运算最后还要在结尾附带结果,怎么解决哇
import java.math.BigDecimal;
import java.util.Random;
public class Cal {
public static void main(String args[]) {
String[] formulaArr = new String[100];
String[] resultArr = new String[100];
for(int i=0; i<100; i++) {
int numOne = getNum();
String symbol = getSymbol();
int numTwo = getNum();
formulaArr[i] = numOne + symbol + numTwo + "=";
resultArr[i] = getResult(numOne, symbol, numTwo);
}
for(int i=1; i<=100; i++) {
if(i % 10 != 0) {
System.out.print(formulaArr[i-1] + " ");
}else {
System.out.println(formulaArr[i-1]);
}
}
System.out.println("正确答案");
for(int i=1; i<=100; i++) {
if(i % 10 != 0) {
System.out.print(resultArr[i-1] + " ");
}else {
System.out.println(resultArr[i-1]);
}
}
}
public static int getNum() {
return (int)(Math.random()*(99))+1;
}
public static String getSymbol() {
String[] symbolArr = new String[]{"+", "-", "*", "/"};
int index = new Random().nextInt(symbolArr.length);
return symbolArr[index];
}
public static String getResult(int numOne, String symbol, int numTwo) {
switch (symbol) {
case "+":
return String.valueOf(numOne + numTwo);
case "-":
return String.valueOf(numOne - numTwo);
case "*":
return String.valueOf(numOne * numTwo);
case "/":
BigDecimal rs = new BigDecimal(numOne).divide(new BigDecimal(numTwo), 2, BigDecimal.ROUND_HALF_UP);
return String.valueOf(rs);
default:
return "error";
}
}
}
除法结果不为0,只要被除数不是0就行了啊,如果是小学低年级除法,那你应该保证被除数是除数的整数倍
如果是高年级除法,有商有余数,至少被除数应大于除数
想四舍五入,直接round就行了
运行后是这种代码怎么编辑啊求指教~
将你现在的代码发出来,我帮你修改
这个不难,我写了一个可以自定义生成多少计算题的方法。有什么懂的可以问我,希望对你有帮助。
public class test {
public static void main(String[] args) {
Scanner x = new Scanner(System.in);
System.out.print("请输入一个整数:");
int number = x.nextInt();
try {
List<BigDecimal> results = new ArrayList<>();
for (int i = 1; i <= number; i++) {
// 随机生成数
Random rd = new Random();
int data1 = rd.nextInt(100) + 1;
int data2 = rd.nextInt(100) + 1;
// 随机生成运算符
String[] operator = {"*", "/", "+", "-"};
Random r = new Random();
int num1 = r.nextInt(4);
String str = data1 + operator[num1] + data2;
BigDecimal result;
BigDecimal bigData1 = new BigDecimal(data1);
BigDecimal bigData2 = new BigDecimal(data2);
if (operator[num1] == "+") {
result = bigData1.add(bigData2);
results.add(result);
System.out.print(str + "=" + "\t");
} else if (operator[num1] == "-") {
result = bigData1.subtract(bigData2);
results.add(result);
System.out.print(str + "=" + "\t");
} else if (operator[num1] == "*") {
result = bigData1.multiply(bigData2);
results.add(result);
System.out.print(str + "=" + "\t");
} else if (operator[num1] == "/") {
result = bigData1.divide(bigData2, 2, RoundingMode.HALF_UP);
results.add(result);
System.out.print(str + "=" + "\t");
}
// 每10换行
if (i % 10 == 0) {
System.out.println("\n");
}
}
System.out.println("\n\n\n计算结果\n\n\n");
// 结果
for (int j = 1; j < results.size()+1; j++) {
System.out.print(String.format("%-8s", results.get(j-1)));
// 每10换行
if (j % 10 == 0) {
System.out.println("\n");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}