1.用户从键盘输入一个文件名和邮箱,判断其是否为正确的java文件名和正确的邮箱格式,判断 Java 文件名是否正确,判断邮箱格式是否正确。其中:合法的文件名应该以 .java 结尾;合法的邮箱名中至少要包含 “@” , 并要求 “@” 在 “.” 之前。

import  java.util.Scanner;
public class judge {
    public static void main(String[] args) {
        Scanner  sc=new Scanner(System.in);
        String fileName=sc.next();
        String email=sc.next();
        int index = fileName.lastIndexOf(".");//lastIndexOf是反向查找,如果此字符串中没有这样的字符,则返回 -1
        String prefix = fileName.substring(index);//用lastIndexof的值到字符串末尾
        if (index>0&&prefix.equals(".java")) {/*equals的作用:用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同,
        返回值为布尔类型。这里是判断从.开始到末尾是否为.java
            */
             System.out.println("Java文件名正确");
        } else {
            System.out.println("Java文件名无效");
        }
        int index2 = email.indexOf("@");//返回第一次出现的指定子字符串在此字符串中的索引
        int index3 = email.indexOf('.');
        if (index2 != -1 && index3 > index2) {
            System.out.println("邮箱格式正确");
        } else {
            System.out.println("邮箱格式无效");
        }
    }
}

输出结果:

    sad.java
    12312@qq.com
    Java文件名正确
    邮箱格式正确
    
    进程已结束,退出代码为 0
jkdk.jav
hasdh.com@
Java文件名无效
邮箱格式无效

进程已结束,退出代码为 0

2.创建一个三角形类,包含属性:private int a,b,c;分别代表三角形的三条边。设计是需要满足如下需求:a. 在创建对象输入三条边,三边取值必须合法(三边均为正值,且任意两边之和大于第三边),否则将无法创建对象;b.为使类更易于维护,必须单独设计一个boolean limit(…)函数,实现对三条边的限制检查,符合创建条件则返回真,否则返回假。
c.该类有一个public boolean setEdges(int x, int y, int z)方法(注:此方法为非静态方法),将a/b/c的值替换成x/y/z,返回true。
但当x,y,z的值不满足三角形限制条件时,将不予替换,并返回false;
d. 三角形至多能创建3个。设计该三角形类,并验证上述需求。

public class Triangle {
    private int a,b,c;
    static int total = 3,count = 0;
    private Triangle(int x,int y,int z){
        a = x;b = y;c = z;
        count++;
    }
    static boolean limit(int x,int y,int z) {
        if(x>0 && y>0 && z>0 && x+y>z && x+z>y && y+z>x) {
            return true;
        }
        return false;
    }
    public static Triangle setTri(int x,int y,int z) {
        if(limit(x,y,z) && count<total) {
            return new Triangle(x,y,z);
        }
        return null;
    }
    public boolean setEdges(int x,int y,int z) {
        if(limit(x,y,z)) {
            a = x;b = y;c = z;
            return true;
        }
        return false;
    }
    public String toString() {
        return "(" + a + "," +  b + "," + c + ")";
    }
}             
class test{
    public static void main(String[] args) {
        Triangle[] t = new Triangle[5];//方法重载
        t[0] = Triangle.setTri(2, 2, 1);
        t[1] = Triangle.setTri(2, 2, 1);
        t[2] = Triangle.setTri(3, 4, 5);
        t[3] = Triangle.setTri(2, 4, 4);//count>2,返回值为null
        t[4] = Triangle.setTri(6, 8, 10);
        for(int i = 0; i<5; i++)
            System.out.println(t[i]);
    }
}

输出结果:

(2,2,1)
(2,2,1)
(3,4,5)
null
null

进程已结束,退出代码为 0

3.一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

public class climb {
    public int climbStairs(int n) {
        if ( n == 1) {
            return 1;
        }
        int first = 1;
        int second = 2;
        for (int i = 3; i <= n; i++) {
            int third = first + second;
            first = second;
            second = third;
        }
        return second;
    }
    public static void main(String[] args) {
        climb t = new climb();
        System.out.println(t.climbStairs(6));
    }
}

输出结果:

13

进程已结束,退出代码为 0

4.给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

import java.util.Arrays;
import java.util.Scanner;


public class find {
    public int[] twosum(int[] nums, int target) {
        for (int i = 0; i < nums.length; i++) {
            for (int j = i + 1; j < nums.length; j++) {//遍历
                if (nums[j] == target - nums[i] && nums[j] != nums[i]) {
                    return new int[]{i, j};
                }
            }
        }
        return nums;
    }
    public static void main(String[] args) {
        int i,y;
        Scanner input = new Scanner(System.in);
        System.out.println("请输入数组个数");
        i=input.nextInt();
        int[] nums = new int[i];
        System.out.println("请输入数据:");
        for (int x = 0; x < i; x++) {
            nums[x] = input.nextInt();
        }
        find t = new find();
        System.out.println("请输入查找target");
        y=input.nextInt();
        int[] m =  t.twosum(nums,y);//同类型
        System.out.println("结果是");
        System.out.println(Arrays.toString(m));/*Arrays.toString()的作用是用来很方便地输出数组,
        而不用一个一个地输出数组中的元素。
        这个方法是是用来将数组转换成String类型输出的,入参可以是long,float,double,int,boolean,byte,object
        型的数组。*/
    }
}

输出结果:

请输入数组个数
4
请输入数据:
1 3 4 5
请输入查找target
7
结果是
[1, 2]

进程已结束,退出代码为 0

Last modification:March 16th, 2021 at 10:36 pm
如果觉得我的文章对你有用,请随意赞赏