设计思路:1、比较随机产生的数字是否相同,若相同则比较运算符号,随机数用int型,运用数组比较是否重复。2、输入并控制可打印的数量。3、控制语句控制是否可有乘除法,添加一个可选择语句;if语句控制乘除、有无余数、加减是否为负。输入定义数值范围,可输入想要取值的范围。
实现代码:
package main;
import java.util.Scanner;
public class yunsuan {
static int q;
/** * @param args */
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner A=new Scanner(System.in);
System.out.println("请输入出题个数和每行题数:");
int GS=A.nextInt();
int G=A.nextInt();
int a[]=new int[GS];
int b[]=new int[GS];
System.out.println("请输入数值范围:");
int N=A.nextInt();
int M=A.nextInt();
System.out.println("请选择是否有乘除法:(有输入1,无输入2)");
int p=A.nextInt();
System.out.println("请选择加减是否有负数:(有输入1,无输入2)");
int z=A.nextInt();
if(p==1) {
System.out.println("选择除法是否有余数:(有输入1,无输入2)");
q=A.nextInt(); }
int i,n,m,k;
for(i=0;i<GS;i++) {
n=N+(int)(Math.random()*M);
m=N+(int)(Math.random()*M);
a[i]=n;
b[i]=m;
int j=i-1;
for(;j>0;j--) {
if(a[i]==a[j]&&b[i]==b[j]&&a[i]+b[i]==a[j]+b[j])
{
a[i]=N+(int)(Math.random()*M);
b[i]=N+(int)(Math.random()*M);
}
}
n=a[i];
m=b[i];
if(p==1){
k=(m+n)%4;
if(k==0){
if(q==2){
while(n+m<0){
n=N+(int)(Math.random()*M);
m=N+(int)(Math.random()*M);
} }
System.out.print(n+"+"+m+"=\t");
}
if(k==1){
if(q==2){
while(n-m<0){
n=N+(int)(Math.random()*M);
m=N+(int)(Math.random()*M);
} }
System.out.print(n+"-"+m+"=\t"); }
if(k==2)
System.out.print(n+"*"+m+"=\t");
if(k==3){
while(m==0){
m=N+(int)(Math.random()*M); }
if(q==2){
while(n%m!=0){
n=N+(int)(Math.random()*M);
m=N+(int)(Math.random()*M);
} }
System.out.print(n+"/"+m+"=\t");
}
if((i+1)%G==0) {
System.out.println(); } }
if(p==2){
k=(m+n)%2;
if(k==0)
System.out.print(n+"+"+m+"=\t");
if(k==1)
System.out.print(n+"-"+m+"=\t");
if((i+1)%G==0)
{
System.out.println(); } } }
}
}
编程总结:
因为对Java的用法比较习惯,所以采用Java编写此程序,总体来说设计较为简单,运用if和while语句判断与实现内容,本次程序还有支持界面一种风格,在后续会做出来。因为之前一直想做的更好一点,但期间遇到一些问题,所以才做了这样一个并不是很理想的,问题在解决中。