找到共同的選修課-hebust

我的bug發表於2020-11-20

7-1找到共同的選修課-hebust

每個同學喜歡的程式語言各不相同,請程式設計找出大家都喜歡的一門程式語言。

輸入格式:
輸入的第一行是記錄的個數

第一行之後為每個同學的程式語言記錄,姓名與程式語言直接使用英文冒號分開,程式語言之間使用空格分開。

輸出格式:
輸出為共同喜歡的程式語言(如果結果為空,則輸出 none )。

輸入樣例:
在這裡給出一組輸入。例如:

3
gcs:java js php
cxy:js python c++
sds:c++ c js

輸出樣例:
在這裡給出相應的輸出。例如:

js

思路:想要找到共同的選修課,只需把第一個同學輸入的選修課與其他學生輸入的選修課相比較,用陣列記下重複的次數,如果重複的次數和人數相同,則代表這門課是共有選修課。需要注意的是,在開始輸入時,輸入的是一整行,則需要把這一行分割成一個個的字串,可以用到split()方法,split() 方法用於把一個字串分割成字串陣列。

示例程式碼如下:

import java.util.*;
public class study1{
	public static void main(String[] args) {
		int number;
		Scanner in=new Scanner(System.in);
		number=in.nextInt();//輸入學生人數
		String str=in.nextLine();//接受換行
		int a[]=new int[100];
		String brr[][]=new String[100][100];//二維陣列儲存資訊,儲存每位同學選修課情況
		String b[]=new String[100];//儲存輸入第一行同學選修課的資訊
		for(int i=0;i<number;i++){
			str=in.nextLine();
			String arr[]=str.split(" |:");//字串分割
			if(i==0) {
				b=arr;
			}
			for(int j=0;j<number;j++) {
				if(i==j) {
					brr[j]=arr;
				}
			}
		}
		for(int i=0;i<b.length;i++) {
			for(int j=0;j<number;j++) {
				for(int k=0;k<brr[j].length;k++) {
					if(b[i].equals(brr[j][k])) {
						a[i]++;
                        break;
					}
				}
			}
		}
		int flag=0;//做標記,判斷是否有共同選修課
		for(int i=0;i<b.length;i++) {
			if(a[i]==number) {
				flag++;
				System.out.println(b[i]);
			}
		}
		if(flag==0) {
			System.out.println("none");
		}
	}
}

第一次寫,難免有些錯誤,希望大家可以理解,遇到錯誤之處,請大家指正。

相關文章