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