1 * 程式設計統計字串"ABCD123!@#$%ab"中大寫字母、小寫字母、數位、其它字元的個數並打 印出來。
public class Test_01 {
public static void main(String[] args) {
/**
* 程式設計統計字串"ABCD123!@#$%ab"中大寫字母、小寫字母、數位、其它字元的個數並打 印出來。
* isLetter是否是字母 isUpperCase 這種方法也可以,有點C語言功底就用了下述方法。
*
*/
String str="ABCD123!@#$%ab";
int num=0;
int num1=0;
int num2=0;
int num3=0;
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
if ('0'<=chars[i]&&chars[i]<='9'){
num++;
}
else if ('A'<=chars[i]&&chars[i]<='Z'){
num1++;
}
else if ('a'<=chars[i]&&chars[i]<='z'){
num2++;
}
else {
num3++;
}
}
System.out.println("字串中數位個數為 ;"+num);
System.out.println("字串中大寫字母個數為 ;"+num1);
System.out.println("字串中小寫字母個數為 ;"+num2);
System.out.println("字串中其他字元個數為 ;"+num3);
}
}
2 *** 程式設計獲取兩個指定字串中的最大相同子串並列印出來。
* 如: s1="asdafghjka", s2="aaasdfg" 他們的最大子串為"asd"
* 提示: 將短的那個串進行長度依次遞減的子串與較長的串比較。**
public class Test_02 {
public static void main(String[] args) {
String s1="asdafghjka";
String s2="aaasdfg";
String substring=null;
String min=(s1.length()>s2.length())?s2:s1;
String max=(s1.length()<s2.length())?s2:s1;
out:for (int i = 0; i < min.length();i++) {
for (int j = 0,k=min.length()-i; k!=min.length()+1 ; j++,k++) {
substring = min.substring(j, k);
if (max.contains(substring)){
System.out.println(substring);
break out;
}
}
}
}
}
3 * 準備一個 HashMap 集合,統計字串"123,456,789,123,456"中每個數位字串出現的次數並列印出來。
如:
123 出現了 2 次
456 出現了 2 次
789 出現了 1 次
public class Test_03 {
public static void main(String[] args) {
String str="123,456,789,123,456";
Map<String,Integer> map=new HashMap();
String[] arr = str.split(",");
for (String str1 : arr ){
if (!map.containsKey(str1)){
map.put(str1,1);
}else {
map.put(str1,map.get(str1)+1);
}
}
Set<Map.Entry<String, Integer>> entries = map.entrySet();
for (Map.Entry<String, Integer> key: entries){
System.out.println(key.getKey()+" 出現的次數 :"+key.getValue());
}
}
}
*** 使用 List 集合實現簡易的學生資訊管理系統,要求列印字元介面提示使用者選擇相應的功 能,根據使用者輸入的選擇去實現增加、刪除、修改、查詢以及遍歷所有學生資訊的功能。
測試類
public class Test_04 {
public static void main(String[] args) {
System.out.println(" ===========================================");
System.out.println(" = ===========學生資訊管理系統========= = ");
System.out.println(" = = 1 :新增學生資訊 = = ");
System.out.println(" = = 2 :刪除學生資訊 = = ");
System.out.println(" = = 3 :修改學生資訊 = = ");
System.out.println(" = = 4 :查詢學生資訊 = = ");
System.out.println(" = = 5 :退出學生系統 = = ");
System.out.println(" = =================================== = ");
System.out.println(" ============================================");
List list =new ArrayList();
Student Stu =new Student();
Scanner scanner=new Scanner(System.in);
out:while (true){
System.out.print(" 請輸入:");
int i = scanner.nextInt();
switch (i){
case 1:
list = Student_add.stu_add(list);break;
case 2:
list = Student_re.stu_re(list);break;
case 3:
list = Srudent_up.stu_up(list);break;
case 4:
Student_se.find(list);break;
case 5:break out;
default:break out;
}
}
}
}
public class Student {
private Integer id;
private String name;
private Integer age;
public Student() {
}
public Student(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
if (id != null ? !id.equals(student.id) : student.id != null) return false;
if (name != null ? !name.equals(student.name) : student.name != null) return false;
return age != null ? age.equals(student.age) : student.age == null;
}
@Override
public int hashCode() {
int result = id != null ? id.hashCode() : 0;
result = 31 * result + (name != null ? name.hashCode() : 0);
result = 31 * result + (age != null ? age.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class Srudent_up {
public static List stu_up(List list){
System.out.println("請輸入要修改學生的id:");
Scanner sc =new Scanner(System.in);
int id = sc.nextInt();
for (int i = 0; i <list.size() ; i++) {
Student o = (Student) list.get(i);
if (o.getId().equals(id)){
System.out.println("請輸入要修改的age :");
o.setAge(sc.nextInt());
System.out.println("請輸入要修改的name :");
o.setName(sc.next());
}else {
System.out.println("系統中不存在此學生資訊!!!!");
}
}
return list;
}
}
* 資訊新增
public class Student_add {
public static List stu_add(List list ){
Scanner sc=new Scanner(System.in);
Student stu =new Student();
System.out.print("請輸入要新增的id :");
Integer id = sc.nextInt();
System.out.print("請輸入要新增的name :");
String name = sc.next();
System.out.print("請輸入要新增的age :");
Integer age = sc.nextInt();
stu.setId(id);
stu.setName(name);
stu.setAge(age);
list.add(stu);
System.out.println(list);
return list;
}
}
public class Student_re {
public static List stu_re(List list ){
System.out.println("請輸入要刪除學生的id:");
Scanner sc =new Scanner(System.in);
int id = sc.nextInt();
for (int i = 0; i <list.size() ; i++) {
Student o = (Student) list.get(i);
if (o.getId().equals(id)){
list.remove(o);
break;
}else {
System.out.println("集合中不存在此元素!!!!");
break;
}
}
return list;
}
}
public class Student_se {
public static void find(List list){
System.out.println(" ==================================================");
System.out.println(" = ===========學生資訊管理系統=============== = ");
System.out.println(" = = 1 :查詢所有學生資訊 = = ");
System.out.println(" = = 2 :根據id查詢學生資訊 = = ");
System.out.println(" = = 3 :根據age查詢學生資訊 = = ");
System.out.println(" = = 4 :根據name查詢學生資訊 = = ");
System.out.println(" = = 5 :退出 = = ");
System.out.println(" = ========================================= = ");
System.out.println(" ==================================================");
Scanner sc=new Scanner(System.in);
out: while (true){
System.out.print(" 請輸入:");
int i = sc.nextInt();
switch (i){
case 1:findall(list);break;
case 2:find_id(list);break;
case 3:find_age(list);break;
case 4:find_name(list);break;
case 5:break out;
}
}
}
public static void findall(List list){
for (int i = 0; i <list.size(); i++) {
System.out.println("學生的資訊: "+list.get(i));
}
}
public static void find_id(List list){
System.out.print("請輸入要查詢學生的id:");
Scanner sc =new Scanner(System.in);
int id = sc.nextInt();
for (int i = 0; i <list.size() ; i++) {
Student o = (Student) list.get(i);
if (o==null)break;
if (o.getId().equals(id)){
System.out.println("該學生的資訊: 年齡"+o.getAge()+"姓名:"+o.getName());
break;
}else {
System.out.println("系統中不存在此學生資訊!!!!");
break;
}
}
}
public static void find_age(List list){
System.out.print("請輸入要查詢學生的age:");
Scanner sc =new Scanner(System.in);
int age = sc.nextInt();
for (int i = 0; i <list.size() ; i++) {
Student o = (Student) list.get(i);
if (o==null)break;
if (o.getAge().equals(age)){
System.out.println("該學生的資訊: 年齡"+o.getAge()+"姓名:"+o.getName());
break;
}else {
System.out.println("系統中不存在此學生資訊!!!!");
break;
}
}
}
public static void find_name(List list){
System.out.print("請輸入要查詢學生的name:");
Scanner sc =new Scanner(System.in);
String name = sc.next();
for (int i = 0; i <list.size() ; i++) {
Student o = (Student) list.get(i);
if (o==null)break;
if (o.getName().equals(name)){
System.out.println("該學生的資訊: 年齡"+o.getAge()+"姓名:"+o.getName());
break;
}else {
System.out.println("系統中不存在此學生資訊!!!!");
break;
}
}
}
}
*** 使用集合實現鬥地主遊戲的部分功能,要求如下:
(1)首先準備 54 張撲克牌並打亂順序。
(2)由三個玩家交替摸牌,每人 17 張撲克牌,最後三張留作底牌。
(3)檢視三個玩家手中的撲克牌和底牌。
(4)其中玩家手中的撲克牌需要按照大小順序列印,規則如下:
手中撲克牌從大到小的擺放順序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3**
public static void main(String[] args) {
* *//*
* 1: 準備牌操作
*//*
//1.1 建立牌盒 將來儲存牌面的
List<String> pokerBox = new ArrayList<String>();
//1.2 建立花色集合
List<String> colors = new ArrayList<String>();
//1.3 建立數位集合
ArrayList<String> numbers = new ArrayList<String>();
//1.4 分別給花色 以及 數位集合新增元素
colors.add("♥");
colors.add("♦");
colors.add("♠");
colors.add("♣");
for(int i = 2;i<=10;i++){
numbers.add(i+"");
}
numbers.add("J");
numbers.add("Q");
numbers.add("K");
numbers.add("A");
//1.5 創造牌 拼接牌操作
// 拿出每一個花色 然後跟每一個數位 進行結合 儲存到牌盒中
for (String color : colors) {
//color每一個花色
//遍歷數位集合
for(String number : numbers){
//結合
// String card = color+number;
//儲存到牌盒中
pokerBox.add(color+number);
}
}
//1.6大王小王
pokerBox.add("小☺");
pokerBox.add("大☠");
// System.out.println(pokerBox);
//洗牌 是不是就是將 牌盒中 牌的索引打亂
// Collections類 工具類 都是 靜態方法
// shuffer方法
*//*
* static void shuffle(List<?> list)
* 使用預設隨機源對指定列表進行置換。
*//*
//2:洗牌
Collections.shuffle(pokerBox);
//3 發牌
//3.1 建立 三個 玩家集合 建立一個底牌集合
ArrayList<String> player1 = new ArrayList<String>();
ArrayList<String> player2 = new ArrayList<String>();
ArrayList<String> player3 = new ArrayList<String>();
ArrayList<String> dipai = new ArrayList<String>();
//遍歷 牌盒 必須知道索引
for(int i = 0;i<pokerBox.size();i++){
//獲取 牌面
String card = pokerBox.get(i);
//留出三張底牌 存到 底牌集合中
if(i>=51){//存到底牌集合中
dipai.add(card);
} else {
//玩家1 %3 ==0
if(i%3==0){
player1.add(card);
}else if(i%3==1){//玩家2
player2.add(card);
}else{//玩家3
player3.add(card);
}
}
}
Collections.sort(player1, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
char c1 = o2.charAt(1);
char c = o1.charAt(1);
return c1-c;
}
});
System.out.println("令狐沖:"+player1);
System.out.println("田伯光:"+player2);
System.out.println("綠竹翁:"+player3);
System.out.println("底牌:"+dipai);
}
*/
public class Test_05 {
// 建立牌盒 將來儲存牌面的
private static HashMap<Integer,String> pokerBox = new HashMap<>();
private static List<Integer> order=new ArrayList();
private static String[] value = { "大☠", "小☺", "2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3" };
private static String[] type = { "♥", "♠", "♣", "♦" };
//3.1 建立 三個 玩家集合 建立一個底牌集合
private static ArrayList<Integer> player1 = new ArrayList<>();
private static ArrayList<Integer> player2 = new ArrayList<>();
private static ArrayList<Integer> player3 = new ArrayList<>();
private static ArrayList<Integer> dipai = new ArrayList<>();
public static void main(String[] args) {
prepare();//準備一副牌
sf();//洗牌
deal();//發牌
show();//展示牌
}
//打亂牌
public static void sf(){
Collections.shuffle(order);
}
/**
* 1: 準備牌操作
*/
public static void prepare(){
int index = 1;
for (int i = 0; i < value.length; i++) {
for (int j = 0; j < type.length; j++) {
if (i < 2) {
pokerBox.put(index, value[i]);
order.add(index);
index++;
break;
} else {
pokerBox.put(index, type[j] + value[i]);
order.add(index);
index++;
}
}
}
}
/**
* 發牌
* 遍歷 牌盒 必須知道索引
*/
public static void deal(){
int card_id;
for(int i = 0;i<order.size();i++){
//獲取 牌面
card_id = order.get(i);
//留出三張底牌 存到 底牌集合中
if(i>=51){//存到底牌集合中
dipai.add(card_id);
} else {
//玩家1 %3 ==0
if(i%3==0){
player1.add(card_id);
}else if(i%3==1){//玩家2
player2.add(card_id);
}else{//玩家3
player3.add(card_id);
}
}
}
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
Collections.sort(dipai);
}
private static void printCards(List<Integer> l) {
for (Integer integer : l) {
System.out.print(pokerBox.get(integer) + " ");
}
}
public static void show(){
System.out.println("\n令狐沖:"); printCards(player1);
System.out.println("\n田伯光:");printCards(player2);
System.out.println("\n綠竹翁:");printCards(player3);
System.out.println("\n底牌:");printCards(dipai);
}
}