综合应用
Created: 2024-09-04 Wed 20:53
编写程序练习使用 String
类的 public String toUpperCase()
方法、
public String toLowerCase()
方法、以及 public String concat(String str)
方法。
public class Exercise {
public static void main (String[] args) {
String s1, s2, t1 = "ABCDabcd";
s1 = t1.toUpperCase();
s2 = t1.toLowerCase();
System.out.println(s1);
System.out.println(s2);
String s3 = s1.concat(s2);
System.out.println(s3);
}
}
ABCDABCD abcdabcd ABCDABCDabcdabcd
编写程序使用 String
类的 public char charAt(int index)
方法得到一个字符串的第一个和最后一个字符。
public class Exercise {
public static void main (String[] args) {
String s = "ABCDabcd";
char cStart = s.charAt(0);
char cEnd = s.charAt(s.length() - 1);
System.out.println(cStart);
System.out.println(cEnd);
}
}
A d
编写程序剔除一个字符串中的全部非数字字符。
public class Exercise {
public static void main (String[] args) {
String str = "ab123you你是谁?";
String regex = "\\D+";
str = str.replaceAll(regex, "");
System.out.println(str);
}
}
123
编程练习 Math
类的常用方法。
import java.util.*;
public class Exercise {
public static void main (String[] args) {
double a = 0, b = 0, c = 0;
a = 12;
b = 24;
c = Math.asin(0.56);
System.out.println(c);
c = Math.cos(3.14);
System.out.println(c);
c = Math.exp(1);
System.out.println(c);
c = Math.log(8);
System.out.println(c);
}
}
0.5943858000010622 -0.9999987317275395 2.718281828459045 2.0794415416798357
编写程序接受用户输入某两天的年、月、日信息,并计算这两天之间的天数间隔。
import java.util.*;
public class Exercise {
public static void main (String[] args) {
Scanner read = new Scanner(System.in);
int year1, month1, day1,
year2, month2, day2;
System.out.println("输入第一个日期(年月日用空格或回车分隔):");
year1 = read.nextInt();
month1 = read.nextInt();
day1 = read.nextInt();
System.out.println("输入第二个日期(年月日用空格或回车分隔):");
year2 = read.nextInt();
month2 = read.nextInt();
day2 = read.nextInt();
Calendar calendar = Calendar.getInstance();
calendar.set(year1, month1 - 1, day1);
long timeYear1 = calendar.getTimeInMillis();
calendar.set(year2, month2 - 1, day2);
long timeYear2 = calendar.getTimeInMillis();
long days = Math.abs((timeYear1 - timeYear2) /
(1000 * 60 * 60 * 24));
System.out.println("" + year1 + "年" + month1 + "月" + day1 + "日和" +
year2 + "年" + month2 + "月" + day2 + "日相隔" + days + "天");
}
}
// Output
// 输入第一个日期(年月日用空格或回车分隔):
// 2020 8 1
// 输入第二个日期(年月日用空格或回车分隔):
// 2021 8 15
// 2020年8月1日和2021年8月15日相隔379天
编写程序接受用户输入的年份和月份,输出相应的日历牌。
利用工具类 Calendar
,并定义 MyCalendar
类的 getCalendar()
方法来实现。
import java.util.*;
public class Exercise {
public static void main(String args[]) {
Scanner read=new Scanner(System.in);
MyCalendar cb=new MyCalendar();
int year = 2000, month = 1;
System.out.println("输入年:");
year = read.nextInt();
System.out.println("输入月:");
month = read.nextInt();
cb.setYear(year);
cb.setMonth(month);
String[] a = cb.getCalendar(); // 返回号码的一维数组
char[] str = "日一二三四五六".toCharArray();
for( char c : str ) {
System.out.printf("%3c", c);
}
for( int i=0; i < a.length; i++ ) { // 输出数组a
if( i % 7 == 0 )
System.out.println(""); // 换行
System.out.printf("%4s", a[i]);
}
}
}
class MyCalendar {
String[] day;
int year = 0, month = 0;
public void setYear(int year) {
this.year = year;
}
public void setMonth(int month) {
this.month = month;
}
public String[] getCalendar() {
String[] a = new String[42];
Calendar rili = Calendar.getInstance();
rili.set(year, month-1, 1);
int weekDay = rili.get(Calendar.DAY_OF_WEEK) - 1; // 计算出1号的星期
int day = 0;
if( month == 1 || month == 3 || month == 5 || month == 7 ||
month == 8 || month == 10 || month == 12 )
day = 31;
if( month == 4 || month == 6 || month == 9 || month == 11 )
day = 30;
if( month == 2 ) {
if( ( (year % 4 == 0) && (year % 100 != 0) ) ||
(year % 400 == 0) )
day = 29;
else
day = 28;
}
for( int i = 0; i < weekDay; i++ )
a[i] = " ";
for( int i = weekDay, n = 1; i < weekDay + day; i++ ) {
a[i] = String.valueOf(n) ;
n++;
}
for( int i = weekDay + day; i < a.length; i++ )
a[i] = " ";
return a;
}
}
// Output
// 输入年:
// 2022
// 输入月:
// 10
// 日 一 二 三 四 五 六
// 1
// 2 3 4 5 6 7 8
// 9 10 11 12 13 14 15
// 16 17 18 19 20 21 22
// 23 24 25 26 27 28 29
// 30 31
使用 Scanner
类的实例解析字符串 数学87分,物理76分,英语96分
中的考试成绩,并计算出总成绩以及平均分数。
import java.util.*;
public class Exercise {
public static void main(String[] args) {
String cost = "数学87分,物理76分,英语96分";
Scanner scanner = new Scanner(cost);
scanner.useDelimiter("[^0123456789.]+");
double sum = 0;
int count = 0;
while(scanner.hasNext()){
try {
double score = scanner.nextDouble();
count++;
sum = sum + score;
System.out.println(score);
}
catch(InputMismatchException exp){
String t = scanner.next();
}
}
System.out.println("总分:" + sum + "分");
System.out.println("平均分:" + sum / count + "分");
}
}
87.0 76.0 96.0 总分:259.0分 平均分:86.33333333333333分
求解约瑟夫问题:12个人排成一圈,从1号报数,凡是数到5的人就出队列(出局), 然后继续报数,试问最后一个出局的人是谁。
import java.io.*;
public class Test {
public static void main(String[] args) {
int N = 12;
boolean[] a = new boolean[N]; // 队列状态
for( int i = 0; i < N; i++ ) {
a[i] = true;
}
int i = 0; // 当前报数的人的下标
int s = 0; // 当前报的数字
int cnt = 0; // 已有多少人出局
while(true) {
if( a[i] ) s++; // 如果在队列中,则报数
if( s == 5 ) { // 如果数到5
System.out.println( (i + 1) ); // 显示该人的序号
a[i] = false; // 该人出局
s = 0; // 报的数归0
cnt++;
if( N - cnt < 5 ) break; // 剩余人数不足5人,游戏结束
}
i++; // 到下一个人
if( i == N ) i = 0; // 因为队伍是一个圆圈
}
System.out.println( "最后一个出局的人序号为:" + (i + 1) );
}
}
5 10 3 9 4 12 8 7 最后一个出局的人序号为:7
一个数如果恰好等于它的因子之和,这个数就称为完数。编写程序求1000以内的所有完数。
public class Exercise {
public static void main(String[] args) {
System.out.print("1000之内的完数有: ");
for (int i = 1; i <= 1000; i++) {
int sum = 0;
for (int j = 1; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
System.out.print(i + " ");
}
}
}
}
1000之内的完数有: 6 28 496
编程实现二分查找法,查找某个单词是否在给定的字典里。
import java.util.Arrays;
public class Exercise {
public static boolean search(String[] dictionary, String wordToFind) {
if (dictionary == null) {
return false;
}
if (dictionary.length == 0) {
return false;
}
int left = 0, right = dictionary.length - 1;
while (left <= right) {
int middle = (left + right) / 2;
if (dictionary[middle].equals(wordToFind)) {
return true;
} else {
if (dictionary[middle].compareTo(wordToFind) > 0) {
right = middle - 1;
} else {
left = middle + 1;
}
}
}
return false;
}
public static void main(String[] args) {
String[] dictionary = {"java", "c", "c++", "python", "php", "sql", "html", "js"};
Arrays.sort(dictionary);
String wordToFind = "java";
boolean found = Exercise.search(dictionary, wordToFind);
if (found) {
System.out.println(String.format("找到了单词 %s", wordToFind));
} else {
System.out.println(String.format("未能找到单词 %s", wordToFind));
}
}
}
找到了单词 java