第一题
分别编写名字为TestPackageCalss和MyException类,实现一下功能:在控制台串中输入一串字符,并判断,如果是整数字符串,则转换成Integer对象,如果是浮点数字符串则转换成Double对象,并格式化为 $#…#.##(不用四舍五入输出进度到小数点后面两位,),如果是非数字,则抛出显式抛出自定义异常类MyException,异常信息是“输入了数据无法实现数字格式转换";
MyException
//MyException
public class MyException extends Exception {
public MyException(String ErrorMessage) {
super(ErrorMessage);
}
}
//TestPackageCalss
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Scanner;
import java.math.*;
public class TestPackageCalss {
public static double check(String s) throws MyException {
String regex="\\d+\\.{1}\\d*";
if(s.matches(regex)) {
return Double.parseDouble(s);
}
else {
throw new MyException("输入了数据无法实现数字格式转换");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
//用正则表达式进行判断
String regex="\\d+";
while(true) {
String s=sc.next();
try {
if(s.matches(regex)) {
//创建整型对象
System.out.println("整型");
Integer I=Integer.valueOf(Integer.parseInt(s));
}else {
//这里要用到了check函数,之后才能catch Exception
double d1=check(s);
System.out.print("浮点型");
Double I=Double.valueOf(Double.parseDouble(s));
//格式化~WOW
DecimalFormat d2=new DecimalFormat("#0.##");
d2.setRoundingMode(RoundingMode.FLOOR);
System.out.println(d2.format(d1));
}
}catch(MyException e) {
System.out.println(e);
}
}
}
}
第二题
编写一个类,该类有一个名字为 getRandomNum的方法 ,该方法可以返回若干个指定范围内的随机数。编写一个测试类,通过键盘输入 返回随机数的个数和范围,打印输出返回的随机数。
比如输入 10 20 ,则可以返回10个20以内的不同的随机数。(应用:比如以学号抽奖,不能重复中奖,每次抽出来数字一定属于某个同学的学号)
这里如果学号过大了,有两种解决方法
- 可以适当的减去某一特定的数,在输出的时候再加上。
- 如果真的真的very big,可以建立一个数组专门用来储存。
package TestPackageCalss;
import java.util.Scanner;
public class RandomNum {
static int flag[]=new int [1000000];
public static int getRandomNum(int head,int tail) {
int s=(int) (head+(Math.random()*(tail-head)));
return s;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int num=0;
int head=sc.nextInt();
int tail=sc.nextInt();
while(num<=tail-head) {
int n=getRandomNum(head, tail);
if(flag[n]==0) {
System.out.print(n+" ");
flag[n]=1;
num++;
}
}
}
}
第三题
编写一个掷色子猜大小的游戏: 每个色子有六个面,分别代表 1 -6 点。每次产生三个色子,三个点数的和>=10 为大,否则为小。 程序启动时在控制台显示 用户当前的总分,然后提示用户输入 押注的 分数,用户按回车后提示用户猜大小,然后程序根据色子点数和用户输入的结果进行判断。每一次执行完后输出色子点数,用户的输赢和剩余的分数。当用户的输入的分数是负数或大于总分,提示用户用户输入有误,如果用户输入exit,则程序退出。程序还要保证如果用户输入的分数 >1000,并且机器赢得的分数少于用户的输入分数时,用户一定输。
package TestPackageCalss;
import java.util.Scanner;
public class _3 {
public static int getRandomNum(int head,int tail) {
int s=(int) (head+(Math.random()*(tail-head)));
return s;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//两人刚开始各有两千颗欢乐豆
int sum=2000,robot=2000,flag=0;
while(true) {
flag=0;
System.out.println("您当前总分为:"+sum);
System.out.println("机器人当前总分为:"+robot);
if(sum<robot)
System.out.println("很遗憾,您输了,如果您想继续玩游戏,请输入go,否则输入exit");
else
System.out.print("请输入您要押注的分数:");
String score=sc.next();
if(score.equals("exit"))
System.exit(-1);
if(score.equals("go")) {
sum=0;
}
int intscore=Integer.parseInt(score);
if(intscore<0||intscore>sum) {
System.out.println("输入有误,请重新输入");
continue;
}
//如果f是1则说明是小,2则说明是大
int f=0;
System.out.print("请输入您要押注的大小:BIG or SMALL");
String size=sc.next();
if(size.equals("BIG"))
f=2;
if(size.equals("SMALL")) {
f=1;
}
//如果用户的押注的分数大于1000或者比机器人高,用户一定输
if(sum>robot||intscore>1000)
flag=1;
System.out.println("色子点数分别为:");
int a,b,c;
while(true) {
a=getRandomNum(1, 6);
b=getRandomNum(1, 6);
c=getRandomNum(1, 6);
if((flag==1&&(a+b+c>=10)&&f==1)||(flag==1&&(a+b+c<10)&&f==2))
break;
else if(flag==0)
break;
}
System.out.println(a+" "+b+" "+c);
if(((a+b+c>=10)&&f==2)||((a+b+c<10)&&f==1))
sum+=100;
else
robot+=100;
}
}
}
第四题
编写一个类TessArray,定义一个一维的整型数组,使用两种循环遍历数组。输出数组中最大值的元素。然后对数组排序,分别在数组头,中间和末尾 位置插入一个元素。
package TestPackageCalss;
import java.util.*;
public class TessArray {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> list=new ArrayList<Integer>();
Scanner sc=new Scanner(System.in);
System.out.print("请输入你要建立一个多大的数组:");
int n=sc.nextInt();
int arr[] =new int [n];
for(int i=0;i<n;i++) {
arr[i]=sc.nextInt();
}
int maxi=arr[0];
for(int i=1;i<arr.length;i++) {
maxi=Math.max(maxi, arr[i]);
}
System.out.println("最大数为:"+maxi);
Arrays.sort(arr);
//乖孩子做法
System.out.print("请输入你要插入的元素:");
int m=sc.nextInt();
int newarr[]=new int[n+3];
for(int i=0,j=0;j<newarr.length;j++) {
if(j==0||j==newarr.length-1||j==newarr.length/2) {
newarr[j]=m;
continue;
}
newarr[j]=arr[i];
i++;
}
for(int i=0;i<n+3;i++)
System.out.print(newarr[i]+" ");
//捣蛋孩子做法
for(int i=0;i<n;i++)
list.add(arr[i]);
System.out.print("请输入你要插入的元素:");
m=sc.nextInt();
list.add((n+1)/2,m);
list.add(0,m);
list.add(n+2,m);
System.out.println(list);
}
}