10.8
package com.itheima.arithmeticoperstor;
import java.util.Random;
import java.util.Scanner;
public class test2 {
public static int errCount=0;
public static void main(String[] args) {
int result;
for(int i=1;i<=10;i++) {
result = square(i);
System.out.println(i + "的平方是:" + result);
}
}
public static int square(int a)
{
return a*a;
}
}
public class test2 {
public static int errCount=0;
public static void main(String[] args) {
Random r=new Random();
for(int i=0;i<30;i++)
{
System.out.println(r.nextInt(1000));
}
}
}
方法可以类比函数,形参的数据类型不同,使其调用的函数不同,这是函数的重载
函数重载:参数类型不同,参数个数不同,参数类型的顺序不同
递归
比如:阶乘
public class test2 {
public static int errCount=0;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println(jiecheng(n));
}
public static int jiecheng(int n)
{
if(n1||n0)return 1;
else return n*jiecheng(n-1);
}
}
但是 阶乘的数很大
比如20 时会有问题,因为计算机是二进制,int的位数不够用
Java提供了BigInteger类来支持大整数的运算
public class test2 {
public static int errCount=0;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println(calculateN2(n));
}
// public static int jiecheng(int n)
// {
// if(n1||n0)return 1;
// else return n*jiecheng(n-1);
// }
public static BigInteger calculateN2(int n)
{
if(n1||n0)return BigInteger.valueOf(1);
else return BigInteger.valueOf(n).multiply(calculateN2(n-1));
}
}
注意BigInteger是一个类,不是基本数据类型,不能用’*’,需要用java给出的multiply()函数
package com.itheima.arithmeticoperstor;
import java.util.Random;
import java.util.Scanner;
public class test2 {
public static int errCount=0;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Random r=new Random();
String[] calculate=new String[35];
System.out.println("请输入小于30道的题目数量");
int n=sc.nextInt();
long startTime = System.currentTimeMillis();
for(int i=0;i<n;i++)
{
int a=r.nextInt(100)+1;
int b=r.nextInt(100)+1;
String op="+-*/";
char c=op.charAt(r.nextInt(op.length()));
boolean isvalid=isValid(a,b,c,i);
if(!isvalid){
i--;
continue;
}
if(isvalid)
{
//题目不能重复
StringBuilder sb = new StringBuilder();
sb.append(a).append(c).append(b);
String str = sb.toString();
boolean flag = false;
for (int j = 0; j < i; j++) {
if (calculate[j].equals(str)) {
flag = true;
break;
}
}
if (!flag) calculate[i] = str;
//输入答案并记录错题数
System.out.println(a + "" + c + "" + b + "=");
System.out.println("请输入答案:");
int ans = sc.nextInt();
checkAnswer(a, b, c, ans);
}
}
long endTime = System.currentTimeMillis();
//是否超出测试时间
if((endTime-startTime)/1000>60) System.out.println("未在指定时间内完成!");
System.out.println("错题数:" + errCount);
System.out.println("正确率:" + (double) (n - errCount) / n * 100 + "%");
}
private static void checkAnswer(int a, int b, char c, int ans) {
if(c=='+') {
if(a+b!=ans) errCount++;
}
else if(c=='-') {
if(a-b!=ans) errCount++;
}
else if(c=='*') {
if(a*b!=ans) errCount++;
}
else {
if(a/b!=ans) errCount++;
}
}
private static boolean isValid(int a,int b,char c,int i)
{
//不允许结果出现负数
if(c=='-')
{
if(a<b)
{
return false;
}
}
//不允许出现相乘4位数
if (c == '*') {
if (a * b >= 1000)
{
return false;
}
}
//相除必须除尽
if (c == '/') {
if(a%b!=0)
{
return false;
}
}
return true;
}
}
浙公网安备 33010602011771号