1. 程式人生 > >各大程式語言如何在一行中接受不定量的輸入資料

各大程式語言如何在一行中接受不定量的輸入資料

在很多公司的筆試題我們會遇到一些題目不難,但是一些細節就是不懂,比如,在一行中輸入一組不定量(即不知道多少個)的資料,C語言的不定大小的陣列,字串陣列如何表示等問題。今天這篇只講如何解決不定量的輸入問題。比如某題目要求輸入一組石頭的重量,再接著輸入一組石頭的價值。這裡沒要要你先輸入多少個石頭,所以得對輸入進行處理:

C/C++:

	int sWeight[100],sValue[100]; //這裡不考慮輸入是否超過100個,這是一個不定大小的陣列問題,下次討論 
	int a,b,i=0;
	while(scanf("%d",&a) != EOF){  //這裡無論以空格區分還是都好區分都能處理,%d只接受數字,其餘字元由c接收
		sWeight[i++] = a;
		char c = getchar();
		if(c == '\n'){
			break;
		}
	}
	i=0;
	while(scanf("%d",&a) != EOF){
		sValue[i++] = a;
		char c = getchar();
		if(c == '\n'){
			break;
		}
	}

java:

		Scanner sc = new Scanner(System.in);
		List<Integer> sWeight = new ArrayList<>();  //石頭重量集合
		List<Integer> sValue = new ArrayList<>();   //石頭價值集合
		//石頭重量資料接收及處理
		String str1 = sc.nextLine();		
		String[] strs1 = str1.split(" ");           //假設資料以空格區分
		for (String s : strs1) {
			if(s!=null || "".equals(s.trim())){
				sWeight.add(Integer.parseInt(s.trim()));
			}
		}
		//石頭價值資料接收及處理
		String str2 = sc.nextLine();
		String[] strs2 = str2.split(" ");         
		for(String s: strs2){
			if(s!=null || "".equals(s.trim())){
				sValue.add(Integer.valueOf(s.trim()));
			}
		}
		System.out.print("石頭重量:");
		for(int i=0;i<sWeight.size();i++){
			System.out.print(sWeight.get(i) + " ");
		}
		System.out.print("石頭價值:");
		for(int i=0;i<sValue.size();i++){
			System.out.print(sValue.get(i) + " ");
		}
		sc.close();

python:

str = input()
list = str.split()  #當split()裡面沒有東西時便是預設空格
list = [int(x) for x in list]
print(list)