《Java程序设计》实验7 - 随机函数Random()的使用

《Java程序设计》实验7

1、 编写程序随机生成k个位于[m,n]区间的整数,对这k个数据进行升序排序并输出。

import java.util.Random;
import java.util.Scanner;

public class Num {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int array[] = new int[num];
		Random ran = new Random();
		sc.close();
		for(int i = 0;i < array.length;i++) {
			array[i] = ran.nextInt(30) + 1;
		}
		
		for(int i = 0;i < array.length;i++) {
			for(int j = 0;j < array.length - 1 - i;j++) {
				if(array[j] > array[j + 1]) {
					int temp = array[j];
					array[j] = array[j + 1];
					array[j + 1] = temp;
				}
			}
		}
		
		for(int i = 0;i < array.length;i++) {
			System.out.println(array[i] + " ");
		}
	}
}

2、 有这样一类字符串,它们顺着看和倒着看是相同的数,例如:121、656、2332、ABCBA等,这样的字符串就称为回文串。编写一个Java程序,判断从键盘接收的字符串是否为回文串。

package homework.test;
import java.util.Scanner;
public class HuiWenString {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		sc.close();
		StringBuffer sb = new StringBuffer(s);
		sb.reverse();
		if(s.equals(sb.toString())) {
			System.out.println(s + "是一个回文串");
		}
		else {
			System.out.println(s + "不是一个回文串");
		}
	}
}

3、利用接口做参数,写个计算器,能完成±*/运算

(1)定义一个接口Compute含有一个方法int computer(int n,int m);

package homework.test;

public interface Compute {
	int computer(int n,int m);
}

(2)设计四个类分别实现此接口,完成±*/运算;

package homework.test;

public class Add implements Compute {

	@Override
	public int computer(int n, int m) {
		return n + m;
	}
}
package homework.test;

public class Subtract implements Compute {

	@Override
	public int computer(int n, int m) {
		return n - m;
	}
}
package homework.test;

public class Multiply implements Compute {

	@Override
	public int computer(int n, int m) {
		return n * m;
	}
}
package homework.test;

public class Divide implements Compute {

	@Override
	public int computer(int n, int m) {
		return n / m;
	}

}

(3)设计一个类UseCompute,含有方法:
public void useCom(Compute com, int one, int two)
此方法要求能够:
1.用传递过来的对象调用computer方法完成运算
2.输出运算的结果

package homework.test;

public class UseCompute {
	public static void useCom(Compute com,int one,int two) {
		System.out.println("调用的类为:"+com.getClass().getName()+" 得到的结果为:"+com.computer(one, two));
	}
}

(4)设计一个测试类,调用UseCompute中的方法useCom来完成±*/运算

package homework.test;

public class ComputeTest {
	public static void main(String[] args) {
		double ans;
		Compute computer;
		computer = new Add();
		UseCompute.useCom(computer,20,5);
		computer = new Subtract();
		UseCompute.useCom(computer,20,5);
		computer = new Multiply();
		UseCompute.useCom(computer,20,5);
		computer = new Divide();
		UseCompute.useCom(computer,20,5);
	}
}

4、设计一个13位ISBN书号校验程序。13位ISBN的校验码计算规则是这样的:前12位数依次乘以1和3,然后求它们的和除以10的余数,最后用10减去这个余数,就得到了校验码(最后一位数字)。如果余数为0,则校验码为0。
比如,ISBN:9787302222224,它的校验码计算方法如下:
9x1+7x3+8x1+7x3+3x1+0x3+2x1+2x3+2x1+2x3+2x1+2x3
= 9+21+8+21+3+0+2+6+2+6+2+6
= 86 86%10=6 10-6=4 所以,在13位ISBN中,这本书的校验码应该为4。 编写一个应用程序ISBNVerification.java,使得该程序可以实现以下功能:从键盘输入中国的某ISBN书号,程序判断输入的ISBN书号是否符合标准的书号,如果输入的书号符合标准,则输出“符合标准”,否则输出“不符合标准”。

package homework.test;

import java.util.Scanner;
public class ISBNVerification {
	public static void main(String[] args) {
		String s;
		Scanner sc = new Scanner(System.in);
		s = sc.next();
		sc.close();
		int num = 0;
		for(int i = 0;i < 12; i++)
		{
			if(i % 2 == 0)
			{
				num += (s.charAt(i)-'0');
			}
			else num += (s.charAt(i)-'0')*3;
		}
		if(num % 10 == 0) System.out.println("校验码为0");
		else System.out.println("校验码为"+(10-(num%10)));
	}
}

5、从控制台输入一个正整数,编程输出该正整数各位数字之和。

package homework.test;

import java.util.Scanner;
public class GetSum {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个整数:");
		long input = sc.nextLong();
		sc.close();
		System.out.println(getSum(input));
	}
	
	public static long getSum(long num) {
		long units;
		long sum = 0;
		while(num != 0) {
			units = num % 10;
			sum += units;
			num = (num - units) / 10;
		}
		return sum;
	}
}

6、采用计算机模拟掷骰子30000次,编写程序统计1、2、3、4、5、6点数各自出现的次数。

package homework.test;

public class Statistics {
	public static void main(String[] args) {
		System.out.println("掷骰子30000次,各点值出现的次数:\n");
		int m;
		int score[][] = {{1,0},{2,0},{3,0},{4,0},{5,0},{6,0}};
		for(int k = 0;k <30000;k++) {
			m = (int)(1 + Math.random() * 6);
			score[m - 1][1]++;
		}
		for(int x = 0;x < 6;x++) {
			for(int y = 0;y < 2;y++) {
				System.out.println(score[x][y]);
			}
			System.out.println("\n");
		}
	}
}

7、根据用户输入的文件名称(带文件后缀的全称)来判断用户输入的文件类型。为了简化问题,我们在这里只考虑以下几种类型:
(1).txt、.doc:文本文件; (2).jpeg、.jpg、.bmp、.png、.gif:图片文件;
(3).wmv、.avi、.rmvb:视频文件; (4).mp3:音频文件; (5).java:java类文件。

package homework.test;

import java.util.Scanner;
public class FileType {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入文件名:");
		String str = sc.next();
		fileType(str);
		sc.close();
	}
	public static void fileType(String fileName) {
		if(fileName == null) {
			fileName = "文件名为空!";
			System.out.println(fileName);
		}
		else {
			String fileType = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length()).toLowerCase();
			String img[] = {".jpeg",".jpg",".bmp",".png",".gif"};
			for(int i = 0;i < img.length;i++) {
				if(img[i].equals(fileName)) {
					System.out.println("图片");
				}
			}
			String document[] = {".txt",".doc"};
			for(int i = 0;i < document.length;i++) {
				if(document[i].equals(fileName)) {
					System.out.println("文档");
				}
			}
			String video[] = {".wmv",".avi",".rmvb"};
			for(int i = 0;i < video.length;i++) {
				if(video[i].equals(fileName)) {
					System.out.println("视频");
				}
			}
			String music[] = {".mp3"};
			for(int i = 0;i < music.length;i++) {
				if(music[i].equals(fileName)) {
					System.out.println("音乐");
				}
			}
			String java[] = {".java"};
			for(int i = 0;i < java.length;i++) {
				if(java[i].equals(fileName)) {
					System.out.println("java");
				}
			}
		}
	}
}

8、编写程序实现以下具体功能:人与电脑猜拳游戏——石头、剪刀、布。
规则:<石头-剪刀>:石头赢;<剪刀-布>:剪刀赢;<布-石头>:布赢;当人与电脑出拳相同时,显示平局。

package homework.test;

import java.util.Scanner;
public class Game {
	public static void main(String[] args) {
		while(true) {
			System.out.println("******欢迎进入猜拳游戏******");
			System.out.println("请出拳:(1剪刀,2石头,3布)");
			Scanner sc = new Scanner(System.in);
			int person = sc.nextInt();
			int computer = (int)(Math.random()*3 + 1);
			String per = "用户";
			String com = "电脑";
			
			switch(person) {
			case 1:
				per = "剪刀";
				break;
			case 2:
				per = "石头";
				break;
			case 3:
				per = "布";
				break;
			}
			
			switch(computer) {
			case 1:
				com = "剪刀";
				break;
			case 2:
				com = "石头";
				break;
			case 3:
				per = "布";
				break;
			}
			
			if(person == 1 && computer == 2 || person == 2 && computer == 3 || person == 3 && computer == 1) {
				System.out.println("你出的是("+per+")       电脑出的是("+com+")");
				System.out.println("【你输了!继续加油吧!】");
			}
			else if(person == computer) {
				System.out.println("你出的是("+per+")       电脑出的是("+com+")");
				System.out.println("【平局,请继续。】");
			}
			else {
				System.out.println("你出的是("+per+")       电脑出的是("+com+")");
				System.out.println("【恭喜你赢了!】");
				System.out.println("【你终于战胜了电脑,游戏结束!】");
				break;
			}
		}
	}
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

临风Mercury

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值