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