工具类练习题及答案

1、编写一个程序,实现从命令行参数输入两个字符串类型的数值,并计算输出两个数值的和。

import java.util.Scanner;

public class one {
/**
 * 1、编写一个程序,实现从命令行参数输入两个字符串类型的数值,并计算输出两个数值的和。
 * 
 */
    public static void main(String[] args) {
        //读取命令数据,并进行类型转换
        Scanner in =new Scanner (System.in);
        String s = in.next();
        String t = in.next();
//Integer.parseInt()是把()里的内容转换成整数。
//Integer.parseInt(String)遇到一些不能被转换为整型的字符时,会抛出异常。
        
    int x = Integer.parseInt(s);    
    int y = Integer.parseInt(t);
    int z =x+y;
    System.out.println(z);  
    }

}

2、编写一个程序,实现从命令行参数输入一字符串,统计该字符串中字符“e”出现的次数。

import java.util.Scanner;

public class two {
/**
 * 
 * 编写一个程序,实现从命令行参数输入一字符串,统计该字符串中字符“e”出现的次数。
 */
    public static void main(String[] args) {
        Scanner in= new Scanner(System.in);
        String s = in.next();
        int num =0;
        for(int i=0;i<s.length();i++) {
            if(s.charAt(i)=='e') {
                num++;
            }
        }
            System.out.println(num);
    }

}

3、生成十个0~100之间的随机数,放到数组中,然后排序输出。

import java.util.Arrays;

public class three {
/**
 * 
 * 3、生成十个0~100之间的随机数,放到数组中,然后排序输出。
 */
    public static void num() {
        int[] a=new int[10];   //定,数组有10个长度
        for(int i =0;i<a.length;i++) {
            //随机数*100 的值范围是 0~100之间
            a[i]=(int) (Math.random()*100);  //从double类型转换为int类型
        }    // 生成随机数a
        Arrays.sort(a);
        
        for(int i=0;i<a.length;i++) {
            System.out.print(a[i]+" ");  //遍历获取值
        }
        
    }
    public static void main(String[] args) {
        num();
    }

}

4、巴黎时间比北京时间晚7个小时,纽约时间比北京时间晚12个小时。
试编写一程序,根据输入的北京时间输出相应的巴黎和纽约时间。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class four {
   /**
    * 巴黎时间比北京时间晚7个小时,纽约时间比北京时间晚12个小时,
    * 试编写一程序,根据输入的北京时间输出相应的巴黎和纽约时间。
    */
    public static void main(String[] args) throws ParseException {
        System.out.println("请输入北京时间");
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
                                                     //注意格式  大小写   
        SimpleDateFormat si = new SimpleDateFormat("yyyy-MM-dd-HH");

        Date parse = si.parse(s);
        Calendar c = Calendar.getInstance();
        // 设置时间
        c.setTime(parse);
        // 修改成巴黎的时间
        c.add(c.HOUR_OF_DAY, -7);
        // 巴黎时间
        double y1 = c.get(c.YEAR);
        double m1 = c.get(c.MONTH);
        double d1 = c.get(c.DAY_OF_MONTH);
        double h1 = c.get(c.HOUR_OF_DAY);

        // 修改成纽约的时间
        c.add(c.HOUR_OF_DAY, -12);
        // 纽约时间
        double y2 = c.get(c.YEAR);
        double m2 = c.get(c.MONTH);
        double d2 = c.get(c.DAY_OF_MONTH);
        double h2 = c.get(c.HOUR_OF_DAY);

        // 输出巴黎时间
        System.out.println("巴黎时间是" + y1 + "-" + m1 + "-" + d1 + "-" + h1);
        // 输出纽约时间
        System.out.println("纽约时间是" + y2 + "-" + m2 + "-" + d2 + "-" + h2);

        }
}

5、解析一个邮箱地址是否合法,如果合法则打印出用户名部分和该邮箱所属的网站域名
如果邮箱地址不合法则显示不合法的原因
提示:邮箱地址不合法的因素:
1)邮箱地址中不包含@或。
2)邮箱地址中含有多了@或。
3)邮箱地址中。出现在@的前面
4)用户名里有其他字符

import java.util.Scanner;


/**
         * 解析一个邮箱地址是否合法,如果合法则打印出用户名部分和该邮箱所属的网站域名
        如果邮箱地址不合法则显示不合法的原因
        提示:邮箱地址不合法的因素:
        1)邮箱地址中不包含@或。
        2)邮箱地址中含有多了@或。
        3)邮箱地址中。出现在@的前面
        4)用户名里有其他字符
        实现步骤:
        (1) 创建一个类,类名:mailtest
        (类名和方法名必须与要求一样。区分大小写)
 * @param args
 */
    public class Five {
        public static boolean testMail(){
            Scanner in = new Scanner(System.in);
            String s = in.next();
            
            //indexOf方法 在字符串检索str 返回第一个出现的位置,如果找不到则返回-1
            if(s.indexOf("@")==-1||s.indexOf(".")==-1){
                
                System.out.println("邮箱地址中不包含@或.");
                return false;
            }
               //lastIndexOf方法  在str字符串中多次出现时,将返回最后一个出现的位置
            if(s.indexOf("@")!=s.lastIndexOf("@")||s.indexOf(".")!=s.lastIndexOf(".")){
                System.out.println("邮箱地址中含有多了@或.");
                return  false;
            }
              // @的位置比 。大,  @的位置靠后
            if(s.indexOf("@")>s.lastIndexOf(".")){
                System.out.println("邮箱地址中.出现在@的前面");
                return false;
            }
              // 遍历@位置前面的数据
            for(int i=0;i<s.indexOf("@");i++){
                //charAt() 方法用于返回指定索引处的字符
                if( (s.charAt(i)>='a'&&s.charAt(i)<='z')||(s.charAt(i)>='A'&&s.charAt(i)<='Z') 
                        ||(s.charAt(i)>='0'&&s.charAt(i)<='9')){
                    
                }else{
                    System.out.println("用户名里有其他字符");
                    return false;
                }
                
            }
            return true;
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            
            if(Five.testMail()){
                System.out.println("邮箱格式合法");
            }else{
                System.out.println("邮箱格式不合法");
            }
        }
    
    }

6、分别在控制台输入字符串和子字符串,并计算字符串中子字符串出现的次数。

import java.util.Scanner;

/**
 * 分别在控制台输入字符串和子字符串,并计算字符串中子字符串出现的次数。
 * @author hp
 *
 */
public class Six {

    public static void main(String[] args) {
     System.out.println("请输入字符串与子字符串");
        Scanner in = new Scanner(System.in);
        String s = in.next();
        String a = in.next();
        
        int num = 0;//i是循環的次數 
        
for(int i = 0;i<s.length()-a.length();i=s.indexOf(a, i)+1){
            if(s.indexOf(a, i)!=-1){
                num++;
            }
        }
        System.out.println(num);
            

}
}

image.png

7、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。

import java.util.Scanner;

public class Seven {
/**
 * 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。
 * @param args
 */
    public static void main(String[] args) {
        Scanner in =new Scanner (System.in);
        String s = in.next();
        int num=0,eng=0,china=0;
        for(int i=0;i<s.length();i++) {
            if(s.charAt(i)>='0'&&s.charAt(i)<='9') {
                num++;
            }else if
((s.charAt(i)>='a'&&s.charAt(i)<='z')||(s.charAt(i)>='A'&&
s.charAt(i)<='Z')) {
                eng++;
            }else if
//unicode中文范围
((19968<=s.charAt(i)&&s.charAt(i)<40623)) {
                china++;
            }
        }
       System.out.println("数字是:"+num);
       System.out.println("英文是:"+eng);
       System.out.println("中文是:"+china);
    }

}
image.png

9、有一种数叫回文数,正读和反读都一样,如12321便是一个回文数

  • 编写一个程序,从命令行得到一个整数,判断该数是不是回文数。
import java.util.Scanner;

/**
 * 有一种数叫回文数,正读和反读都一样,如12321便是一个回文数
 * 。编写一个程序,从命令行得到一个整数,判断该数是不是回文数。
 * @author hp
 *
 */
public class Eight {

    public static boolean foo() {
        Scanner in=new Scanner(System.in);
        String s =in.next();
        int j = s.length()-1;
        for(int i=0;i<s.length()/2;i++) {
            if(s.charAt(i)!=s.charAt(j)) {
                return false;
            }
         j--;
        }
     return true;
    }
       
    public static void main(String[] args) {
        if(foo()) {
            System.out.println("是回数");
        }else {
            System.out.println("不是回数");
        }   

    }

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 编写一个程序,实现从命令行参数输入两个字符串类型的数值,并计算输出两个数值的和。 public class Exe...
    辽A丶孙悟空阅读 565评论 0 13
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,533评论 0 5
  • /* * 1、编写一个程序,实现从命令行参数输入两个字符串类型的数值,并计算输出两个数值的和。 */ import...
    煙雨樓邰郁维阅读 752评论 0 0
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,926评论 0 10
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,438评论 0 2