难度由简到难

包括

我们对于后端开发中最常用的字符串操作

题目A

//导包Scanner类
import java.util.Scanner;
public class Main {
	//主方法
    public static void main(String[] args) {
    	//创建对象Scanner类的对象
        Scanner sc=new Scanner(System.in);
        //输入x,y
        int x= sc.nextInt();
        int y= sc.nextInt();
        //如果x和y相等 为真 判断通过
        if(x==y) System.out.println("Tacit!");
        else System.out.println("No Tacit!");
    }
}

题目B


public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //输入a,b,c
        int a= sc.nextInt();
        int b= sc.nextInt();
        int c= sc.nextInt();
        //(int)为强制类型转换 会缺失精度
        int output=(int) (a*0.2+b*0.3+c*0.5);
        System.out.println(output);
    }
}

题目C


public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int number= sc.nextInt();
        int sum=0;
        //双重循环
        //外层循环控制有组组数,即多少个括号
        //i为第0组,第1组 ... 第i组
        //外层循环number次
        for (int i = 0; i < number; i++) {
        	//每一组都有i+1个数,由组数决定,把每一组的数依次加给sum
            //内层循环i+1次 由i控制 
            //i可以看做是第i组
            for (int i1 = 0; i1 <= i+1; i1++) {
                sum+=i1;
            }
        }
        System.out.println(sum);
    }
}

题目D


public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n= sc.nextInt();
        //提前创建数组 长度为21 21是根据题目所给 因为最多20个数
        int x[]=new int[21];
        x[1]=0;
        x[2]=1;
        x[3]=1;
        //用循环填满数组
        for(int i=4;i<=20;i++){
            x[i]=x[i-3]+2*x[i-2]+x[i-1];
        }
        //直接根据索引找到数据
        System.out.println(x[n]);
        //也可以采用题目C的方法
    }
}

题目E

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //输入n
        int n= sc.nextInt();
        //从i到n遍历一遍 用循环
        //即把i到n都拿出来
        for (int i = 1; i <= n; i++) {
        	//根据题目做一个取余判断
            if(i%3==2&&i%5==3&&i%7==2){
                System.out.println(i);
            }
        }
    }
}

题目F


public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //根据题目写一个二维数组
        //第一个[]内为行
        //第二个[]内为列
        int x[][]=new int[7][2];
        for (int i = 0; i < 7; i++) {
        
            for (int i1 = 0; i1 < 2; i1++) {
                x[i][i1]= sc.nextInt();
            }
        }
        定义sum数组 长度为7 为了存储7个和
        int sum[]=new int[7];
        //把每一行的数都加起来
        for (int i = 0; i < 7; i++) {
            sum[i] = x[i][0] + x[i][1];
        }
        int count=0,index=0;
        //通过遍历不断更新count,把count更新为最大值
        //把索引赋值给index
        for (int i = 0; i < 7; i++) {
            if(sum[i]>count){
                count=sum[i];
                index=i;
            }
        }
        //判断输出 说出的为索引加一 因为索引是从0开始
        if(count>8) System.out.println(index+1);
        else System.out.println("0");
    }
}

题目G


public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //贪心算法,求局部最优解
       //我们求最少解,我们假设一次就能刚好跳过去
       //第二次就能测出距离
        int n = scanner.nextInt();
        //距离是1第一次跳1次直接跳过去了
        //距离肯定就是1
        if (n == 1) {
            System.out.println(0);
        } else {
        //否则要跳一次过去,再跳一下消耗一次小沙,以得知悬崖的距离
            System.out.println(1);
        }
    }
}

题目H


public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        char x=sc.next().charAt(0);
        char temp='A';
        //a为行数
        int a=(int)x-64;
        //System.out.println(a);
        //外层循环控制行数 i为第i行
        for (int i = 1; i <= a; i++) {
        	//内层循环有三个部分 
            //打印a-i个空格
            //打印i个temp 每次打印temp后 temp自加
            //打印i-1个temp 每次打印temp后 temp自减
            for (int i1 = 1; i1 <= a-i; i1++) {
                System.out.print(" ");
            }
            for (int i2=1;i2<=i;i2++){
                System.out.print(temp);
                temp++;
            }
            temp-=1;
            for (int i3=1;i3<=i-1;i3++){
                temp-=1;
                System.out.print(temp);
            }
            //换行
            System.out.println();
        }
    }
}

题目I


public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int number= sc.nextInt();
        int x= sc.nextInt();
        int b,sum=0;
        //遍历
        for (int i = 1; i <= number; i++) {
            b=i;
            //得到每一位 对10取余再取整
            while (b!=0){
                if (b%10==x){
                sum++;
                }
                b/=10;
            }
        }
        System.out.println(sum);
    }
}

题目J


public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //方法nextline表示一行一行输入
        //在字符串前面加上空格,以便于判定
        String text=" "+sc.nextLine();
        //System.out.println(text);
        //将字符串转化成数组,其中空格也放入数组
        char x[]=text.toCharArray();
        /*
        for (int i = 0; i < x.length; i++) {
            System.out.print(x[i]+" ");
        }
        */
        //假设字符串为空 目的是将得到的首字母加给字符串
        String s="";
        //遍历字符数组
        for (int i = 0; i < x.length; i++) {
        //发现了空格 则记录空格后面的字符 将其转化成大写后加给s
            if(x[i]==' '){
                if(97<=x[i+1])
                //用ACILL值判断或者是'A'<'Z'都可
                //如果是小写减去32变成大小写后再加给s
                    s+=(char)(x[i+1]-32);
                    //已经是大写,直接加给s
                else s+=x[i+1];
            }
        }
        System.out.println(s);
    }
}