1.月份天数
描述 输入年份月份,请输出这个月的天数
输入描述:
多组输入输出 第一个参数为年份,如2018代表2018年,2019代表2019年 第二个参数为月份,如1代表1月,2代表2月
(参数间均以空格隔开)输出描述: 输出当月的实际天数。
输入例子1: 2018 2 2020 2 2019 1
输出例子1: 28 29 31
package test;
import java.io.*;
import java.util.*;
public class GetDays {
// 判断年份是否是闰年 如果是返回true
public static boolean isLeap(int year) {
if (year % 100 != 0) {
return year % 4 == 0;
} else {
return year % 400 == 0;
}
}
public static void main(String args[]) {
// 定义年份,月份 变量
int year;
int month;
int day[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Scanner sc = new Scanner(System.in);
/**
* Todo: 使用循环结构 接收输入的年份月份
*/
String inputString = sc.nextLine();
String stringArray[] = inputString.split(" ");
int num[] = new int[stringArray.length];
for (int i = 0; i < stringArray.length; i++) {
num[i] = Integer.parseInt(stringArray[i]);
}
year = num[0];
month = num[1];
if(isLeap(year)){
int i = month % 12;
if(i==2){
System.out.println(29);
}else{
System.out.println(day[i-1]);
}
}else{
int i = month % 12;
System.out.println(day[i-1]);
}
}
}
2.计算n的阶乘
描述 用户输入一个自然数,设为n,计算n的阶乘(n!=12345…n),并打印输出。
package test;
import java.io.*;
import java.util.*;
public class GetDays {
public static void main(String[] args) {
Scanner m=new Scanner(System.in);
System.out.println("请输入一个整数:");
int n=m.nextInt();
int s=1;
//TODO:通过for循环计算n的阶乘。
while(n!=0){
s=s*n;
n--;
}
System.out.print(s);
}
}
3.数字转汉字大写
描述 在代码段中,使用Java编程语言,将输入五位以下的数字金额,转换成汉字大写形式。
如:12345
壹万贰仟叁百肆拾伍元
0.1234
零元点壹贰叁肆
12
壹拾贰元
package test;
import java.io.*;
import java.util.*;
public class GetDays {
public static void main(String []args){
Scanner sc = new Scanner(System.in);
System.out.println("输入两个学生的学号和姓名,以及要查找学生的学号:");
Map<String,String> map = new HashMap<String,String>();
/*
TODO:将输入的学号,姓名放到map存储
调用map.put方法,第一个参数为学号,第二个参数为姓名
*/
String inputString = sc.nextLine();
String stringArray[] = inputString.split(" ");
map.put(stringArray[0],stringArray[1]);
map.put(stringArray[2], stringArray[3]);
String next = stringArray[4];
/*
TODO:根据输入学号,输出学生的姓名
调用map.get方法,输出的内容为:“学号为***的学生的姓名是:******
*/
String name = map.get(next);
System.out.println("学号为"+next+"的学生的姓名是:"+name);
}
}
4.数字转汉字大写
描述 在代码段中,使用Java编程语言,将输入五位以下的数字金额,转换成汉字大写形式。
如:12345
壹万贰仟叁百肆拾伍元
0.1234
零元点壹贰叁肆
12
壹拾贰元
import java.io.*;
import java.util.*;
public class CnUpper {
// 整数部分
private String integerPart;
// 小数部分
private String floatPart;
// 将数字转化为汉字的数组,因为各个实例都要使用所以设为静态
private static final char[] cnNumbers = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };
// 供分级转化的数组,因为各个实例都要使用所以设为静态
private static final char[] series = { '元', '拾', '百', '仟', '万', '拾', '百', '仟', '亿' };
/**
* 构造函数,通过它将阿拉伯数字形式的字符串传入
*
* @param original
*/
public CnUpper(String original) {
// 成员变量初始化
integerPart = "";
floatPart = "";
if (original.contains(".")) {
// 如果包含小数点
int dotIndex = original.indexOf(".");
integerPart = original.substring(0, dotIndex);
floatPart = original.substring(dotIndex + 1);
} else {
// 不包含小数点
integerPart = original;
}
}
/**
* 取得大写形式的字符串
*
* @return
*/
public String getCnString() {
// 因为是累加所以用StringBuffer
StringBuffer sb = new StringBuffer();
//Todo: 整数部分处理
for(int i=0;i<integerPart.length();i++){
int number=getNumber(integerPart.charAt(i));
sb.append(cnNumbers[number]);
sb.append(series[integerPart.length()-1-i]);
}
//Todo: 小数部分处理
if(floatPart.length()>0){
sb.append("点");
for(int i=0;i<floatPart.length();i++){
int number=getNumber(floatPart.charAt(i));
sb.append(cnNumbers[number]);
}
}
// 拼接好的字符串
String result = sb.toString();
// 处理【点零】后缀
if(result.endsWith("点零")) {
result = result.substring(0,result.length()-2);
}
return result;
}
/**
* 将字符形式的数字转化为整形数字 因为所有实例都要用到所以用静态修饰
*
* @param c
* @return
*/
private static int getNumber(char c) {
String str = String.valueOf(c);
return Integer.parseInt(str);
}
/**
* @param args
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 获取输入的数字
double num = sc.nextDouble();
// 转换成字符串
String str = String.valueOf(num);
CnUpper cn = new CnUpper(str);
String result = cn.getCnString();
System.out.println(result);
}
}