《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;
			}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/mercury8124/article/details/129252118