各大程式語言如何在一行中接受不定量的輸入資料
阿新 • • 發佈:2018-12-31
在很多公司的筆試題我們會遇到一些題目不難,但是一些細節就是不懂,比如,在一行中輸入一組不定量(即不知道多少個)的資料,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)