Java课程习题

资源下载地址:https://download.youkuaiyun.com/download/qq_40707685/10784731

资源图片:

3.编写程序。输入两个正整数 m 和 n,求其最大公约数和最小公倍数

private static void MAXANMIN() {
		System.out.println("请输入第一个整数:");
		Scanner scanner = new Scanner(System.in);
		int m = scanner.nextInt();
		System.out.println("请输入第二个整数:");
		Scanner scanner2 = new Scanner(System.in);
		int n = scanner2.nextInt();
		int r = 0, max, min, pub = 0;
		max = (n > m) ? n : m;
		min = (n < m) ? n : m;
		boolean jutice = true;
		/*
		 * for(;(r=max%min)==0;) { max=min; min=r; }
		 */
		if (max % min == 0) {
			pub = min;
		} else { // 辗转相除法
			while (jutice) {
				r = max % min;
				pub = r;
				max = min;
				min = r;
				if ((max % min) == 0) {
					jutice = false;
				}
			}
		}
		System.out.println("最大公约数为:" + pub);
		System.out.println("最小公倍数为:" + m * n / pub);
	}

5.编写程序。打印杨辉三角形(要求打印出 10 行)

private static void YangHui() {
		int[][] list = new int[10][10];
		int i = 0;
		int j = 0;
		list[0][0] = 1;
		list[1][0] = 1;
		list[1][1] = 1;
		for (i = 1; i < 10; i++) {
			for (j = 1; j < i + 1; j++) {
				list[i][0] = 1;
				list[i][i] = 1;
				list[i][j] = list[i - 1][j - 1] + list[i - 1][j];
			}
		}
		for (i = 0; i < 10; i++) {
			System.out.println("\n");
			for (j = 0; j < i + 1; j++)
				System.out.print(list[i][j] + "\t");

		}
	}

6.编写程序。输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数

private static void spiltString() {
		System.out.println("plese input String:");
		Scanner sc = new Scanner(System.in);
		String st = sc.nextLine();
		int englishNumber = 0;
		int spaceNumber = 0;
		int number = 0;
		int otherNumber = 0;
		for (int i = 0; i < st.length(); i++) {
			if ("0".hashCode() <= st.charAt(i) && st.charAt(i) <= "9".hashCode()) {
				number++;
			} else if (st.charAt(i) == " ".hashCode()) {
				spaceNumber++;
			} else if ("A".hashCode() <= st.charAt(i) && st.charAt(i) <= "z".hashCode()) {
				englishNumber++;
			} else {
				otherNumber++;
			}
		}
		System.out.println("英文字符个数为" + englishNumber + "\t" + "空格字符个数为" + spaceNumber + "\t" + "数字个数为" + number + "\t"
				+ "其他为" + otherNumber);

	}

}

1.创建一个桌子(Table)类,该类中有桌子名称、重量、桌面宽度、长度和桌子高度属性,以
及以下几个方法:
(1) 构造方法:初始化所有成员变量。
(2) area( ):计算桌面的面积。
(3) display( ):在屏幕上输出所有成员变量的值。
(4) changeWeight(int w):改变桌子重量。
在测试类的 main()方法中实现创建一个桌子对象,计算桌面的面积,改变桌子重量;
并在屏幕上输出所有桌子属性的值。

Table 类

package 课程作业2;
/*
@author 最爱不过土豆泥
@date 2018.11.12 17.11

*/
/*
 * 1.创建一个桌子(Table)类,该类中有桌子名称、重量、桌面宽度、长度和桌子高度属性,以
及以下几个方法:
(1) 构造方法:初始化所有成员变量。
(2) area( ):计算桌面的面积。
(3) display( ):在屏幕上输出所有成员变量的值。
(4) changeWeight(int w):改变桌子重量。
在测试类的 main()方法中实现创建一个桌子对象,计算桌面的面积,改变桌子重量;
并在屏幕上输出所有桌子属性的值。
 */
public class Table {
           String name;//名字
           int weight;//重量
           float width;//宽度
           float length;//长度
           float altitude;//高度
		public Table(String name, int weight, float width, float length, float altitude) {
			super();
			this.name = name;
			this.weight = weight;
			this.width = width;
			this.length = length;
			this.altitude = altitude;
		}
		public float area() {
			
			
			
			return width*length;
			
		}
		public void display() {
			System.out.println("名字"+"\t"+name);
			System.out.println("重量"+"\t"+weight);
			System.out.println("宽度"+"\t"+width);
			System.out.println("长度"+"\t"+length);
			System.out.println("高度"+"\t"+altitude);
			
		}
		public void changWeight(int w) {
			weight=w;
		}
		
}

测试table类

package 课程作业2;
/*
@author 最爱不过土豆泥
@date 2018.11.12 17.26
在测试类的 main()方法中实现创建一个桌子对象,计算桌面的面积,改变桌子重量;
并在屏幕上输出所有桌子属性的值。
*/
public class TestTable {
        public static void main(String[] args) {
			Table table=new Table("小可爱",25, 2.3f, 2.3f, 1.8f);
			System.out.println("面积"+"\t"+table.area());
			table.changWeight(23);
			table.display();
		}
}

4.创建银行账户类 SavingAccount,用静态变量存储年利率,用私有实例变量存储存款额。提
供计算年利息方法(即余额乘以年利率)和计算月利息方法(即年利息/12)。
编写一个测试程序测试该类,建立 SavingAccount 的对象 saver,存款额是 3000,设置年利
率是 3%,计算并显示 saver 的存款额、年利息和月利息。
要求:
(1)SavingAccount 类要有构造方法,用于对存款额赋初值。
(2)SavingAccount 类要有显示存款额的方法。 

SavingAccount类

package 课程作业2;
/*
@author 最爱不过土豆泥
@date 2018年11月13日上午9:08:29
@TODO创建银行账户类 SavingAccount,用静态变量存储年利率,用私有实例变量存储存款额。提
供计算年利息方法(即余额乘以年利率)和计算月利息方法(即年利息/12)。
编写一个测试程序测试该类,建立 SavingAccount 的对象 saver,存款额是 3000,设置年利
率是 3%,计算并显示 saver 的存款额、年利息和月利息。
要求:
(1)SavingAccount 类要有构造方法,用于对存款额赋初值。
(2)SavingAccount 类要有显示存款额的方法
@blog 

*/
public class SavingAccount {
	final float  annualRatte=0.03f;
	private float balance;
	public float getBalance() {
		return balance;
	}
	public void setBalance(float balance) {
		this.balance = balance;
	}
	public SavingAccount(float balance) {
		super();
		this.balance = balance;
	}
	public float annualInterest() {
		return balance*annualRatte;
		
	}
	public float monthlyInterest() {//月利息
		return balance*annualRatte/12;
		
	}

}

测试类

package 课程作业2;
/*
@author 最爱不过土豆泥
@date 2018年11月13日上午9:17:18
@TODO编写一个测试程序测试该类,建立 SavingAccount 的对象 saver,存款额是 3000,设置年利
率是 3%,计算并显示 saver 的存款额、年利息和月利息。
@blog 

*/
public class TeatSavingAccount {
   public static void main(String[] args) {
	SavingAccount saver=new SavingAccount(3000);
	System.out.println("存款额为"+saver.getBalance());
	System.out.println("年利息为"+saver.annualInterest());
	System.out.println("月利息为"+saver.monthlyInterest());
}
}

4.定义一个接口 Calculate,接口中有 3 个抽象方法如下:
(1)“long fact(int m)”方法的功能是求参数的阶乘
(2)“long intPower(int m,int n)”方法的功能为求参数 m 的 n 次方
(3) “boolean findFactor(int m,int n)”方法的功能为判参数 m 加上参数 n 的和是否大于 100
定义类 CalImp 实现该接口,编写应用程序,调用接口中的 3 个方法,并将调用方法所得的
结果输出。 

接口类

package pcck5;
/*
@author 最爱不过土豆泥
@date 2018年11月14日上午10:19:11
@TODO定义一个接口 Calculate,接口中有 3 个抽象方法如下:
(1)“long fact(int m)”方法的功能是求参数的阶乘
(2)“long intPower(int m,int n)”方法的功能为求参数 m 的 n 次方
(3) “boolean findFactor(int m,int n)”方法的功能为判参数 m 加上参数 n 的和是否大于 100
定义类 CalImp 实现该接口,编写应用程序,调用接口中的 3 个方法,并将调用方法所得的
结果输出。 
@blog 

*/
public interface Calculate {
  abstract long fact(int m);
  abstract long intPower(int m,int n);
  abstract boolean findFactor(int m,int n);
}

子类

package pcck5;
/*
@author 最爱不过土豆泥
@date 2018年11月14日上午10:19:44
@TODO1)“long fact(int m)”方法的功能是求参数的阶乘
(2)“long intPower(int m,int n)”方法的功能为求参数 m 的 n 次方
(3) “boolean findFactor(int m,int n)”方法的功能为判参数 m 加上参数 n 的和是否大于 100
定义类 CalImp 实现该接口,编写应用程序,调用接口中的 3 个方法,并将调用方法所得的
结果输出。 
@blog 

*/
public class CalImp implements Calculate{

	@Override
	public long fact(int m) {
		// TODO Auto-generated method stub
		int sum=1;
		for(int i=1;i<=m;i++) {
			sum=i*sum;
		}
		return sum;
	}

	@Override
	public long intPower(int m, int n) {
		// TODO Auto-generated method stub
		int sum=1;
		for(int i=1;i<=n;i++) {
			sum=m*sum;
		}
		return sum;
	}

	@Override
	public boolean findFactor(int m, int n) {
		// TODO Auto-generated method stub
		if((m+n)>100) {
			return true;
		}else {
			return false;
		}
		
	}

}

实现类

package pcck5;

import java.util.Scanner;

/*
@author 最爱不过土豆泥
@date 2018年11月14日上午10:29:44
@TODO测试类
@blog 

*/
public class Test {
     public static void main(String[] args) {
	        Scanner scanner=new Scanner(System.in);
	        while(true) {
	        	System.out.println("please input m");
	        	int m=scanner.nextInt();
	        	System.out.println("please input n");
	        	int n=scanner.nextInt();
	        	 CalImp calImp=new CalImp();
	        	System.out.println("阶乘为"+"\t"+calImp.fact(m));
	        	System.out.println("m的n次方为"+"\t"+calImp.intPower(m, n));
	        	System.out.println("m+n是否打于100"+"\t"+calImp.findFactor(m, n)+"\n");
	        }
    }
}

1.使用正则表达式判断字符串 text 是否为合法的手机号

常用的正则表达式参见这里https://blog.youkuaiyun.com/qq_40707685/article/details/84068481

package 课程作业4;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
@author 最爱不过土豆泥
@date 2018年11月14日上午11:10:07
@TODO1.使用正则表达式判断字符串 text 是否为合法的手机号
@blog 

*/
public class Regex {
     public static void main(String[] args) {
    	 Scanner scanner=new Scanner(System.in);
		while(true) {
			System.out.println("请输入手机号:");
			String text=scanner.nextLine();
			System.out.println("是否为手机号?"+regexText(text));
		}
	}
     private static  boolean regexText(String text) {
    	 Pattern pattern=Pattern.compile("^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$");
    	 Matcher matcher=pattern.matcher(text);
    	// boolean b =matcher.matches(pattern);
		return matcher.matches();
    	 
     }
}

2.编写程序,给出一个不多于 5 位的随机正整数,计算:
(1)它是几位数;
(2)逆序打印出各位数字。
提示:可使用 Math 类的静态方法 random(),该方法返回一个[0,1)之间的小数;
提示:可使用 Random 类的 nextInt 方法,产生指定区间的随机数。

package 课程作业4;


import java.util.Random;

/*
@author 最爱不过土豆泥
@date 2018年11月14日下午2:21:00
@TODO2.编写程序,给出一个不多于 5 位的随机正整数,计算:
(1)它是几位数;
(2)逆序打印出各位数字。
提示:可使用 Math 类的静态方法 random(),该方法返回一个[0,1)之间的小数;
提示:可使用 Random 类的 nextInt 方法,产生指定区间的随机数。
@blog 

*/
public class RandomNumber {
  public static void main(String[] args) {
	Random random=new Random();
	int number=random.nextInt(10000);
	System.out.println("生成的随机数"+number);
	print(number);
}
  public static void print(int number) {
	  int a=number;
	  int weisu=1;
	  while(number>10) {
	 number=number/10;
	   weisu++;
	  }
	  
	  System.out.println("该数字是"+weisu+"位数");
	  String st=String.valueOf(a);
		for(int i=st.length()-1;i>=0;i--) {
			System.out.print(st.charAt(i));
		}
  }
}

4.编写程序,实现当用户输入学号和姓名时,将每一个学号和姓名加在文件中,如果用户输
入 done,就结束程序。

package 课程作业4;

import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;

/*
@author 最爱不过土豆泥
@date 2018年11月14日下午3:14:41
@TODO.编写程序,实现当用户输入学号和姓名时,将每一个学号和姓名加在文件中,如果用户输
入 done,就结束程序。
@blog 

*/
public class Addname {
	public static void main(String[] args) {
		while (true) {
			System.out.println("请输入姓名");
			Scanner scanner = new Scanner(System.in);
			String userName = scanner.nextLine();
			if (userName.equals("done")) {
				System.out.println("录入结束");
				System.exit(0);
			}

			System.out.println("请输入学号");

			String useId = scanner.nextLine();
			if (useId.equals("done")) {
				System.out.println("录入结束");
				System.exit(0);
			}

			String name = "example" + ".txt";// 拼接文件名
			InputStream in = null;
			try {
				in = new FileInputStream(name);// 判断本地是否存在文件
				if (in != null) {
					in.close();// 关闭输入流
					createFile(name, true, userName, useId);// 存在文件则采用修改文件

				}
			} catch (FileNotFoundException e) {
				// TODO: handle exception
				createFile(name, false, userName, useId);// 不存在则新建
			} catch (IOException e) {
				// TODO: handle exception
				e.printStackTrace();
			}
		}
	}

	private static void createFile(String name, boolean label, String userName, String useId) {
		// TODO Auto-generated method stub
		BufferedOutputStream out = null;
		StringBuffer sbf = new StringBuffer();// 拼接内容
		try {
			if (label) {// 当已存在文件,则在文件后追加
				// 创建输出流,用于追加文件
				out = new BufferedOutputStream(new FileOutputStream(name, true));

			} else {// 不存在当天文件则新建文件
					// 创建输出流,用于保存文件
				out = new BufferedOutputStream(new FileOutputStream(name));

			}

			sbf.append("姓名:" + userName + "\t");

			sbf.append("学号:" + useId + "\t");

			String str = sbf.toString();
			byte[] b = str.getBytes();
			for (int i = 0; i < b.length; i++) {
				out.write(b[i]);
			}

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// TODO: handle finally clause
			try {
				if (out != null)
					out.close();
			} catch (Exception e2) {
				// TODO: handle exception
				e2.printStackTrace();
			}
		}
	}
}

以下是全部的题目:部分题目因为我创建的类有点多就没贴出来,所有源代码已经打包上传:

下载地址:https://download.youkuaiyun.com/download/qq_40707685/10784731

说明:课程作业3没有单独打包。pack1和2是第一题的,pack3是第二题的,以此类推。有错误希望大家指出来。

资源图:

课程作业 1 :
1.编写程序,获得汉字’物’、’联’、’网’在 unicode 码中对应的十进制编码。
2.编写程序,输入某一个成绩(满分,100 分)计算其相应等级信息。
等级信息如下:
A+:97 B+:87 C+:77 D+:67 F:60 分以下 缓考:-1
A:93 B:83 C:73 D:63
A-:90 B-:80 C-:70 D-:60
3.编写程序。输入两个正整数 m 和 n,求其最大公约数和最小公倍数。
4.编写程序。输入某年某月某日,判断这一天是这一年的第几天?
5.编写程序。打印杨辉三角形(要求打印出 10 行)。具体如下图:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
6.编写程序。输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数

1.创建一个桌子(Table)类,该类中有桌子名称、重量、桌面宽度、长度和桌子高度属性,以
及以下几个方法:
(1) 构造方法:初始化所有成员变量。
(2) area( ):计算桌面的面积。
(3) display( ):在屏幕上输出所有成员变量的值。
(4) changeWeight(int w):改变桌子重量。
在测试类的 main()方法中实现创建一个桌子对象,计算桌面的面积,改变桌子重量;
并在屏幕上输出所有桌子属性的值。
2.定义复数的类 Complex 并测试其功能:
(1)复数由实部、虚部两个部分组成,在类定义中应包含保存这两部分信息的内容。
(2)在类中定义构造函数,使用户能够在构造对象的同时为对象赋初值。
(3)在类中定义复数的加法、减法、乘法三个二元操作符来完成复数间的加、减、乘的功
能。
(4)通过重载 tosthing,使得 Complex 类的对象能够显示其自身信息。
(5)通过显示定义一个成员函数完成对象的赋值操作,使用户能够对 Complex 类的对象进
行赋值。
(6)编写一段主程序(main 函数),使用户能够通过这段主程序输入复数并进行复数的计
算。
3.编写程序,模拟银行账户功能。编写银行类 Account,该类具备以下属性和方法:
属性:账号、储户姓名、存款余额、最小余额。
方法:存款、取款、查询。
根据用户操作显示储户相关信息。如:存款操作后,显示储户原有余额、今日存款数额及最
终存款余额;取款时,若最后余额小于最小余额,拒绝取款,并显示“至少保留余额:XXX
元”
提示:(1)可把最小余额定义成静态变量。
(2)要有 Account 类的构造方法。
4.创建银行账户类 SavingAccount,用静态变量存储年利率,用私有实例变量存储存款额。提
供计算年利息方法(即余额乘以年利率)和计算月利息方法(即年利息/12)。
编写一个测试程序测试该类,建立 SavingAccount 的对象 saver,存款额是 3000,设置年利
率是 3%,计算并显示 saver 的存款额、年利息和月利息。
要求:
(1)SavingAccount 类要有构造方法,用于对存款额赋初值。
(2)SavingAccount 类要有显示存款额的方法。 
课程习题
3
课程作业 3 :
1.包名为”pack1”的包里有一个类 Message,用来表示人们的通信信息,它拥有的字段
为:name(String 类型),sex(char 类型),age(int 类型),address(String 类型),这些字段的访
问控制权限都是 private.为每一个字段定义读取和更新该字段信息的方法,并定义一个
toString()方法,以生成格式化的输出个信息字段的结果。
还要为 Message 类定义 2 个构造方法,一个构造方法是无参的,另外一个构造方法是对成
员变量初始化。
在另外一个包”pack2”里定义一个测试类 Test,里面包含 main 方法,实例化一个 Message
类,测试 Message 类里的相关方法(如 toString(),getName()等等)。
2.建立一个抽象类 Shape 类,有 Circle(圆形)和 Rect(矩形)子类。Shape 类有 zhouchang()
和 area()两种抽象方法。Rect 有 cha()用于比较长宽的差,若长大于宽输出“长比宽大”,否则
输出“宽比长大”。
(正方形)Squ 为 Rect 子类,在 Squ 类中,重写 cha()方法,并输出“长等于宽”
要求:
(1)要提供 Circle 和 Rect 类要重写父类 Shape 的 zhouchang()和 area()方法
(2)Circle 类要有静态常量 PI
(3)为 Circle 类,Rect 类,Squ 类提供构造方法,为属性赋初值
(4)编写测试类,测试上述程序
3.设计一个接口 Transport,声明三个接口常量,表示运输工具,声明一个计算费用的方法,
参数是重量和里程。
(1)一个运输公司从网上得到订单,订单上标有货物重量和运输里程,该公司可以使用三种
运输工具:卡车,火车,飞机。
(2)卡车,火车,飞机分别实现作业 1 的运输接口,计算运费的方法如下:
a)卡车:运费=重量*距离*120。当距离大于 1000(km)或重量大于 60(t)的时候拒载,返
回-1
b)火车:当距离在 900(km)内(包含)时,运费=重量*距离*250,大于 900(km)运费=
重量*距离*300
c)飞机:当距离大于 500(km)时,运费=重量*距离*750,否则拒载,返回-1
提示:在接口中定义三个常量;分别定义三种不同实现类来实现计算运输费用的方法。
4.定义一个接口 Calculate,接口中有 3 个抽象方法如下:
(1)“long fact(int m)”方法的功能是求参数的阶乘
(2)“long intPower(int m,int n)”方法的功能为求参数 m 的 n 次方
(3) “boolean findFactor(int m,int n)”方法的功能为判参数 m 加上参数 n 的和是否大于 100
定义类 CalImp 实现该接口,编写应用程序,调用接口中的 3 个方法,并将调用方法所得的
结果输出。 
课程习题
4
课程作业 4 :
1.使用正则表达式判断字符串 text 是否为合法的手机号。
2.编写程序,给出一个不多于 5 位的随机正整数,计算:
(1)它是几位数;
(2)逆序打印出各位数字。
提示:可使用 Math 类的静态方法 random(),该方法返回一个[0,1)之间的小数;
提示:可使用 Random 类的 nextInt 方法,产生指定区间的随机数。
3.分别向 Set 集合及 List 集合中添加“A”、“a”、“c”、“C”、“a”5 个元素,观察重复值“a”
能否重复地在 List 集合及 Set 集合中添加。
4.编写程序,实现当用户输入学号和姓名时,将每一个学号和姓名加在文件中,如果用户输
入 done,就结束程序。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值