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));
}
}
}
}
做了好几道输出图案的题,代码越写越长,参考一下别人的代码学学新知识。
-
List l = new ArrayList();// 利用ArrayList类实例化List集合
-
经常需要将一个数组或者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
-
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);
}
}
- toString()两种形式:toString()返回表示 Integer 值的 String 对象;toString(int i)返回表示指定 int 的 String 对象。
- contains()判断字符串中是否有子字符串。如果有则返回true,如果没有则返回false。
- 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的元素不参与排序。