周末课后作业
1、编写一个程序,实现从命令行参数输入两个字符串类型的数值,并计算输出两个数值的和。
import java.util.Scanner;
public class Sum {
public static void main(String[] args) {
System.out.println("请输入两个字符串类型的数值……");
Scanner in = new Scanner(System.in);
String str1 = in.next();
String str2 = in.next();
Sum(str1,str2);
}
public static void Sum(String str1,String str2){
int x = Integer.parseInt(str1);
int y = Integer.parseInt(str2);
int sum = x+y;
System.out.println(x+"与"+y+"两个数值的和为"+sum);
}
}
2、编写一个程序,实现从命令行参数输入一字符串,统计该字符串中字符“e”出现的次数。
import java.util.Scanner;
public class Count {
public static void main(String[] args) {
System.out.println("请输入一个字符串");
Scanner in = new Scanner(System.in);
String str = in.next();
Count(str);
}
public static void Count(String str){
String str2 = "";
int sum = 0;
for(int i = 0;i<str.length();i++){
if(str.charAt(i) == 'e'){
sum++;
}
}
System.out.println("字符串\""+str+"\"中有"+sum+"个e字符");
}
}
3、生成十个0~100之间的随机数,放到数组中,然后排序输出。
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class 随机数组排序 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Random r = new Random();
int[] arr = new int[10];
for(int i = 0;i<10;i++){
arr[i] = (int) Math.round(Math.random()*100);
}
Arrays.sort(arr);
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
}
4、解析一个邮箱地址是否合法,如果合法则打印出用户名部分和该邮箱所属的网站域名,如果邮箱地址不合法则显示不合法的原因
4.1 提示:邮箱地址不合法的因素:
4.1.1邮箱地址中不包含@或.
4.1.2邮箱地址中含有多了@或.
4.1.3邮箱地址中.出现在@的前面
4.1.4用户名里有其他字符
4.2实现步骤:
4.2.1创建一个类,类名:mailtest
类图如下:
import java.util.Scanner;
public class Email {
public static void main(String[] args) {
System.out.println("请输入一个邮箱地址……");
Scanner input = new Scanner(System.in);
String str = input.nextLine();
if(Mail(str) == true){
}else{
System.out.println("不合法");
}
}
public static boolean Mail(String str){
boolean b = true;
if(str.indexOf('@') == -1 || str.indexOf('.') == -1){
System.out.println("邮箱地址中不包含@或.");
return false;
}
if(str.indexOf('@') != str.lastIndexOf('@') ||str.indexOf('.') != str.lastIndexOf('.')){
System.out.println("邮箱地址中含有多了@或.");
return false;
}
if(str.lastIndexOf('@') > str.indexOf('.')){
System.out.println("邮箱地址中.出现在@的前面");
return false;
}
for(int i = 0;i<str.indexOf('@');i++){
char c = str.charAt(i);
if( (c>=4&&c<=57) || (c>=65&&c<=90) || (c>=97&&c<=122) ){
}else{
System.out.println("用户名里有其他字符");
return false;
}
}
String[] array = str.split("@");
System.out.println("用户名为:"+array[0]);
System.out.println("该邮箱所属的网站域名为"+array[1]);
return true;
}
}
5、分别在控制台输入字符串和子字符串,并计算字符串中子字符串出现的次数。
import java.util.Scanner;
public class 字符串出现次数 {
public static void main(String[] args) {
System.out.println("请输入一个字符串");
Scanner in = new Scanner(System.in);
String str = in.next();
System.out.println("请输入需要统计的子字符串");
String str1 = in.next();
String str2 = " ";
int sum = 0;
for(int i = 0;i<str.length();i++){
if(str.charAt(i) == str1.charAt(0)){
for(int j = i;j<str1.length();j++){
str2 = str2 + str.charAt(j);
}
sum++;
i=i+str2.length()-1;
}
}
System.out.println("字符串\""+str+"\"中有"+sum+"个\""+str1+"\"");
}
}
6、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。
public class 各字符个数 {
public static void main(String[] args) {
char[] c = { '6', '7', 's', 'k', '4', '数', '字' };
int z = 0;
int s = 0;
int y = 0;
for (char x : c) {
switch ((int) x / 10) {
case 4:
s++;
break;
case 5:
s++;
break;
case 6:
y++;
break;
case 7:
y++;
break;
case 8:
y++;
break;
case 9:
y++;
break;
case 10:
y++;
break;
case 11:
y++;
break;
case 12:
y++;
break;
default:
z++;
}
System.out.println("数字字符有" + s);
System.out.println("英文字符有" + y);
System.out.println("中文字符有" + z);
}
}
}
7、有一种数叫回文数,正读和反读都一样,如12321便是一个回文数。编写一个程序,从命令行得到一个整数,判断该数是不是回文数。
public class 回文数 {
import java.util.Scanner;
public class huiwenshu {
public static void main(String[] args) {
System.out.println("请输入一个数……");
Scanner input = new Scanner(System.in);
int num = input.nextInt();
if(MyNum(num)==true){
System.out.println(num+"是回文数");
}else{
System.out.println(num+"不是回文数");
}
}
public static boolean huiwenshu(int num){
String str = String.valueOf(num);
boolean b = true;
for(int i = 0,j = str.length()-1;i<str.length()/2 ;i++,j--){
if(str.charAt(i) != str.charAt(j) ){
b = false;
break;
}
}
return b;
}
}
8、巴黎时间比北京时间晚7个小时,纽约时间比北京时间晚12个小时,试编写一程序,根据输入的北京时间输出相应的巴黎和纽约时间。
package javademo1;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Test6 {
public static void main(String[] args) throws ParseException {
String s = "2018-12-17 15:19:42";
// System.out.println("请按照如下格式输入日期(yyyy-MM-dd HH:mm:ss)");
// Scanner input = new Scanner(System.in);
// String s = input.nextLine();
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = f.parse(s);//转成日期对象
Calendar c = Calendar.getInstance();//执行计算机的时间
c.setTime(date);//输入的时间
c.add(Calendar.HOUR, -7);
String s2 = f.format(c.getTime());//将日期格式化成指定的串
System.out.println("巴黎时间为:"+s2);
c.setTime(date);
c.add(Calendar.HOUR, -12);
String s3 = f.format(c.getTime());//将日期格式化成指定的串
System.out.println("纽约时间为:"+s3);
}
}
输出结果: