第一题
比特科技有若干个学生,(学生对象放在一个LIst当中),每个学生有一个姓名,班级和某次考试成绩的属性(double),某次考试结束后,每个学生都获得了一个考试成绩。遍历LIst集合,并把学生对象的属性打印出来
import java.util.ArrayList; class Student { private String name; private String classes; private double score; public Student(String name, String classes, double score) { this.name = name; this.classes = classes; this.score = score; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", classes='" + classes + '\'' + ", score=" + score + '}'; } } public class Main { public static void main(String[] args) { ArrayList<Student> students = new ArrayList<>(); students.add(new Student("gaobo", "102", 18.3)); students.add(new Student("gaobo1", "102", 128.3)); students.add(new Student("gaobo1", "102", 138.3)); System.out.println(students); } }
分析代码可以知道,ArrayList中存放的是Student这个对象,所以每次添加的时候都要new一个新的学生对象。
第二题
有一个List当中存放的是整型数据,要求使用Collection.sort进行排序
import java.util.ArrayList; import java.util.Collections; public class Main { public static void main(String[] args) { ArrayList<Integer> integers = new ArrayList<>(); integers.add(22); integers.add(2); integers.add(33); Collections.sort(integers); System.out.println(integers); } }
这题int型就放int对应的类,直接调用Collection方法下面的sort类就行了
第三题
删除第一个字符串当中出现的第二个字符串中的字符
String str1 = “welcome to bit”;
String str2 = “come”;
输出结果:
wl t bit
用String解决
import java.util.Scanner; public class Main { public static String fun(String str1, String str2) { StringBuilder sb = new StringBuilder(); for(int i = 0; i < str1.length(); i ++) { char ch = str1.charAt(i); if(! str2.contains(ch+"")) { sb.append(ch); } } return sb.toString(); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str1 = scanner.nextLine(); String str2 = scanner.nextLine(); System.out.println(fun(str1, str2)); } }
用ArrayList解决
import java.util.ArrayList; public class Main { public static void main(String[] args) { String str1 = "welcome to bit"; String str2 = "come"; ArrayList<Character> list = new ArrayList<>(); for(int i = 0; i < str1.length(); i ++) { char ch = str1.charAt(i); if(! str2.contains(ch+"")) { list.add(ch); } } for(char ch : list) { System.out.print(ch); } } }
第四题
打印一幅扑克牌
import java.util.ArrayList; import java.util.List; import java.util.Random; class Card { private String name; private int rank; public Card(String name, int rank) { this.name = name; this.rank = rank; } @Override public String toString() { return "[ " + this.name + " " + this.rank + " ]"; } } public class Main { public static List<Card> buyCard() { String[] suits = {"♥", "♠", "♦", "♣"}; ArrayList<Card> cards = new ArrayList<>(); for(int i = 0; i < 4; i ++) { for(int j = 1; j <= 13; j ++) { cards.add(new Card(suits[i], j)); } } return cards; } public static void swap(List<Card> cards, int i, int j) { Card tmp = cards.get(i); cards.set(i, cards.get(j)); cards.set(j, tmp); } public static void buffCard(List<Card> cards) { int size = cards.size(); for(int i = size - 1; i > 0; i --) { Random random = new Random(); int ran = random.nextInt(i); swap(cards, i, ran); } } public static void main(String[] args) { List<Card> cards = buyCard(); System.out.println("买牌" + cards); buffCard(cards); System.out.println("洗牌" + cards); ArrayList<List<Card>> hand = new ArrayList<>(); ArrayList<Card> hand1 = new ArrayList<>(); ArrayList<Card> hand2 = new ArrayList<>(); ArrayList<Card> hand3 = new ArrayList<>(); hand.add(hand1); hand.add(hand2); hand.add(hand3); for(int i = 0; i < 5; i ++) { for(int j = 0; j < 3; j ++) { hand.get(j).add(cards.remove(0)); } } System.out.println("第一个人的牌:" + hand1); System.out.println("第二个人的牌:" + hand2); System.out.println("第三个人的牌:" + hand3); System.out.println("剩下的牌:" + cards); } }
java常识
java中方法的重载
1.函数名必须相同。
2.返回类型不做要求。
3.参数列表不同(参数个数或者参数的返回类型)。
第一个条件和第二个条件必须同时满足
递归
1.要调用自身。
2.要有一个趋近于终止的条件。
3.推导出递归的公式。(重要)
就是把大问题化成小问题。
递归就是有递有归。
思考递归:横向思考,不要试图去走进递归的代码 展开
代码执行 纵向
for循环的打印
在java中新加一个打印数组的方法
foreach可以快捷出来,也可以手动打出来
import class Zy { public static void main(String[] args) { int[] arr = {1, 2, 3, 4}; for(int a : arr) { System.out.println(a + " "); } } }