牛客刷题笔记-编程初学者入门训练(简单篇3)

BC68-X形图案

import java.util.Collections;
import java.util.Scanner;
public class Main {
    
    
    public static void main(String[] args) {
    
    
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
    
    
            int n = sc.nextInt();
            String str = String.join("",Collections.nCopies(n," "));
            for (int i = 0; i < n; i++) {
    
    
                char[] temp = str.toCharArray();
                temp[i] = '*';
                temp[n-i-1] = '*';
                System.out.println(new String(temp));
            }
        }
    }
}

做了好几道输出图案的题,代码越写越长,参考一下别人的代码学学新知识。

  1. List l = new ArrayList();// 利用ArrayList类实例化List集合在这里插入图片描述

  2. 经常需要将一个数组或者List的各项通过分隔符连接成字符串。一般的实现逻辑是通过成员+分隔符连接,然后在结果截掉最后一个分隔符。String.Join方法实现的正是这一功能。

    List names=new ArrayList<String>();
    names.add("1");
    names.add("2");
    names.add("3");
    System.out.println(String.join("-", names));
    String[] arrStr=new String[]{
          
          "a","b","c"};
    System.out.println(String.join("-", arrStr));
    输出:
    1-2-3
    a-b-c
    
  3. ncopies(int, T) 方法用于返回一个不可变列表组成的n个拷贝的指定对象。 声明:public static List nCopies(int n, T o)
    参数:n-- 在返回列表中元素的个数;o-- 在返回列表中反复出现的元素。 返回值:方法调用返回的不可变列表组成的n个拷贝的指定对象。 异常:IllegalArgumentException-- 如果 n < 0 此异常被抛出。

BC74-HTTP状态码

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
    
    
    public static void main(String[] args) {
    
    
        Scanner sc = new Scanner(System.in);
        Map<Integer,String> map = new HashMap<>(16);
        map.put(200,"OK");
        map.put(202,"Accepted");
        map.put(400,"Bad Request");
        map.put(403,"Forbidden");
        map.put(404,"Not Found");
        map.put(500,"Internal Server Error");
        map.put(502,"Bad Gateway");
        while (sc.hasNext()) {
    
    
            int state = sc.nextInt();
            System.out.println(map.get(state));
        }
    }
}

用switch做完看其他人的方法发现了这种做法,学习一下map。

Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
LinkedHashMap<K,V>:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
注意:Map接口中的集合都有两个泛型变量<K,V>,在使用时,要为两个泛型变量赋予数据类型。两个泛型变量<K,V>的数据类型可以相同,也可以不同。

BC80-登录验证

import java.util.Scanner;
public class Main {
    
    
    public static void main(String[] args) {
    
    
    Scanner sc=new Scanner(System.in);
    String[] strs=sc.nextLine().split(" ");
    if(strs[0].equals("admin")&&strs[1].equals("admin")) {
    
    
         System.out.println("Login Success!");
        }else {
    
    
         System.out.println("Login Fail!");
        }
    }
}

判断字符串相同方法:String.equals()

BC85-包含数字9的数

public class Main {
    
    
    public static void main(String[] args) {
    
    
     int sum=0;
     for(Integer i=1;i<=2019;i++) {
    
    
        if(i.toString().contains("9")) {
    
    
            sum++;
        }
     }
     System.out.println(sum);
    }
}
  1. toString()两种形式:toString()返回表示 Integer 值的 String 对象;toString(int i)返回表示指定 int 的 String 对象。
  2. contains()判断字符串中是否有子字符串。如果有则返回true,如果没有则返回false。
  3. Integer是int的包装类,int则是java的一种基本数据类型;
    Integer变量必须实例化后才能使用,而int变量不需要;
    Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值;
    Integer的默认值是null,int的默认值是0。

其他

import java.util.Arrays;
public class Main {
    
    
     public static void main(String[] args) {
    
    
         int[] a = {
    
    9, 8, 7, 2, 3, 4, 1, 0, 6, 5};
         Arrays.sort(a);
         for(int i = 0; i < a.length; i ++) {
    
    
             System.out.print(a[i] + " ");
         }
     }
}
输出:
0 1 2 3 4 5 6 7 8 9

1、Arrays.sort(int[] a)
这种形式是对一个数组的所有元素进行排序,并且是按从小到大的顺序。
2、Arrays.sort(int[] a, int fromIndex, int toIndex)
这种形式是对数组部分排序,也就是对数组a的下标从fromIndex到toIndex-1的元素排序,注意:下标为toIndex的元素不参与排序。

猜你喜欢

转载自blog.csdn.net/qq_41536271/article/details/112337146