1.试编写Java代码实现一个计数器类Computer其中包括:
域value :用来保存计数器的当前值;
方法increment(): 计数器加一;
方法decrement() :计数器减一;
方法reset():计数器清零。
请编写并测试程序。
2.要求产生10个随机的字符串,字符串由大小写英文字母和数字组成,每一个字符串互相不重复,每一个字符串中组成的字符(a-z,A- Z,0-9)也不相同,每个字符串长度为10。
3. 编写程序,实现从命令行输入三个数值参数作为三角形的三条边,以此构造一个三角形。程序应该实现如下功能:
检查用户输入的命令行参数是否足够,如果不够三个参数,则程序可能产生ArrayIndexOutOfBoundsException异常
检查输入的命令行参数是否为数值格式,如果输入的数值参数格式错误,则程序可能产生NumberFormatException异常
检查输入的命令行参数中是否有负值,如果有负值,则程序可能产生IiegalArgumentException异常
检查输入的命令行参数的三个数值是否能够构造一个三角形,如果不能构造一个三角形,则程序可能产生InvailEdgesException异常(InvailEdgesException为自定义异常)
4.打印英式,中式日历
5.统计字符个数,再按字符个数降序排列信息
1.很简单,直接求解即可。(为了方便我直接写在一个类里面了)
package Homework;
import java.util.Scanner;
/**
*试编写Java代码实现一个计数器类Computer其中包括:
*域value :用来保存计数器的当前值;
*方法increment(): 计数器加一;
*方法decrement() :计数器减一;
*方法reset():计数器清零。
*请编写并测试程序。
*/
public class Test1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字");
int num = sc.nextInt();
Computer k = new Computer(num);
System.out.print(num+"加1后为:");
k.increment(num);
k.printInfo();
System.out.print("再减1后为:");
k.decrement(num);
k.printInfo();
System.out.print("归零:");
k.reset(num);
k.printInfo();
}
}
class Computer {
private int count;
public Computer(int count) {
super();
this.count = count;
}
public void increment(int count) {
this.count++;
}
public void decrement(int count) {
this.count--;
}
public void reset(int count) {
this.count = 0;
}
public void printInfo() {
System.out.println(count);
}
}
2.先将字符全都放在一个list中,再用hash表的去重性,循环即可实现
Math.random() * all.size() 表示在整个size大小的数字下取随机数
package Homework;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* 要求产生10个随机的字符串,字符串由大小写英文字母和数字组成,每一个字符串
* 互相不重复,每一个字符串中组成的字符(a-z,A-Z,0-9)也不相同,每个字符串长度为10;
*/
public class RandomStr {
public static void main(String[] args) {
//String filename=RandomStringUtils.randomAlphanumeric(10);
List<Character> all = new ArrayList<Character>();
Set<Character> ran = new HashSet<Character>();
for (char i = 'a'; i <= 'z'; i++) {
all.add(i);
}
for (char i = 'A'; i <= 'Z'; i++) {
all.add(i);
}
for (char i = '0'; i <= '9'; i++) {
all.add(i);
}
for (int i = 0; i < 10; i++) {
ran.clear();
for (int j = 0; j < 10; j++) {
int a = (int) (Math.random() * all.size());
ran.add(all.get(a));
}
for (char c : ran) {
System.out.print(c);
}
System.out.println();
}
}
}
3.实现异常命令即可
package Homework;
/**
* 编写程序,实现从命令行输入三个数值参数作为三角形的三条边,以此构造一个三角形。程序应该实现如下功能:
* 检查用户输入的命令行参数是否足够,如果不够三个参数,则程序可能产生ArrayIndexOutOfBoundsException异常
* 检查输入的命令行参数是否为数值格式,如果输入的数值参数格式错误,则程序可能产生NumberFormatException异常
* 检查输入的命令行参数中是否有负值,如果有负值,则程序可能产生IiegalArgumentException异常
* 检查输入的命令行参数的三个数值是否能够构造一个三角形,如果不能构造一个三角形,则程序可能产生InvailEdgesException异常(InvailEdgesException为自定义异常)
*/
public class Triangle {
public static void main(String[] args) throws InvailEdgesException {
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);
int c = Integer.parseInt(args[2]);
if (args.length != 3) {
throw new ArrayIndexOutOfBoundsException("请输入三个参数");
}
for (int i = 0; i < args.length; i++) {
try {
Integer.valueOf(args[i]);
} catch (Exception e) {
throw new NumberFormatException("请输入数值");
}
if (Integer.valueOf(args[i]) < 0)
throw new IllegalArgumentException("请输入正数");
}
if (a >= b + c || b >= a + c || c >= a + b)
throw new InvailEdgesException("不能够构造一个三角形");
System.out.println(a + " " + b + " " + c + " " + "这三条边可以构成三角形");
}
}
// 自定义的异常类
class InvailEdgesException extends Exception {
public InvailEdgesException(String message) {
super(message);
}
}
4.(1)英式日历
package Afternoon;
import java.util.Calendar;
public class Test12 {
// 打印2018年日历
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2018);
System.out.println("\t\t2018年日历\t\t");
for (int i = 0; i < 12; i++) {
System.out.println("---------------第" + (i + 1) + "月------------------");
cal.set(Calendar.MONTH, i);
generateCal(cal);
}
}
private static void generateCal(Calendar cal) {
// 将时间移动到本月的第一天
cal.set(Calendar.DAY_OF_MONTH, 1);
// 本月第一天在所在周是第几天
int start = cal.get(Calendar.DAY_OF_WEEK);
// 打印日历头
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 1; i <= 7 * 6; i++) {
if (i < start) {
System.out.print("\t");
continue;
}
System.out.print(cal.get(Calendar.DATE) + "\t");
// 打印7天空一行
if (i % 7 == 0) {
System.out.println();
}
// 判断是否到月末
if (cal.get(Calendar.DATE) == cal.getActualMaximum(Calendar.DAY_OF_MONTH)) {
break;
}
// 日期的值增加
cal.add(Calendar.DATE, 1);
}
System.out.println();
}
}
(2)中式日历(即在英式日历上做小小的修改,把星期天放在最后即可)
package Homework;
/**
* 打印中国式日历
*/
import java.util.Calendar;
public class CHcalendar {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2018);
System.out.println("\t\t2018年日历\t\t");
for (int i = 0; i < 12; i++) {
System.out.println("----------------第" + (i + 1) + "月-----------------");
cal.set(Calendar.MONTH, i);
generateCal(cal);
}
}
private static void generateCal(Calendar cal) {
// 将时间移动到本月的第一天
cal.set(Calendar.DAY_OF_MONTH, 1);
// 本月第一天在所在周是第几天
int start = cal.get(Calendar.DAY_OF_WEEK);
if (start == 1) {
start = 7;
} else
start -= 1;
// 打印日历头
System.out.println("一\t二\t三\t四\t五\t六\t日");
for (int i = 1; i <= 7 * 6; i++) {
if (i < start) {
System.out.print("\t");
continue;
}
System.out.print(cal.get(Calendar.DATE) + "\t");
// 打印7天空一行
if (i % 7 == 0) {
System.out.println();
}
// 判断是否到月末
if (cal.get(Calendar.DATE) == cal.getActualMaximum(Calendar.DAY_OF_MONTH)) {
break;
}
// 日期的值增加
cal.add(Calendar.DATE, 1);
}
System.out.println();
}
}
5.
package Homework;
/**
* 统计字符个数,再按字符个数降序排列信息
*/
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
public class StatisticNum {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String str = sc.nextLine();
// 将str转换成字符数组
char[] chs = str.toCharArray();
// 将字符数组中的元素放入hashmap中
Map<Character, Integer> map = new HashMap<Character, Integer>();
for (int i = 0; i < chs.length; i++) {
Integer num = map.get(chs[i]);
if (num == null)
// 第一次遇到这个字符
map.put(chs[i], 1);
else
// 不是第一次遇到这个字符
map.put(chs[i], num + 1);
}
System.out.println("按出现的字符降序排列:");
// 排序
// 将map转换成list
Set<Entry<Character, Integer>> set = map.entrySet();
ArrayList<Entry<Character, Integer>> list = new ArrayList<Entry<Character, Integer>>(set);
Collections.sort(list, new NumComparator());
for (Entry<Character, Integer> ey : list) {
System.out.println(ey.getKey() + ":" + ey.getValue());
}
}
}
class NumComparator implements Comparator<Entry<Character, Integer>> {
public int compare(Entry<Character, Integer> ey1, Entry<Character, Integer> ey2) {
return ey2.getValue() - ey1.getValue();
}
}