問題 B: C語言-成績排序

問題 B: C語言-成績排序

時間限制: 1 Sec  內存限制: 128 MB
提交: 1000  解決: 617
[提交] [狀態] [命題人:外部導入]

題目描述

現有有N個學生的數據記錄,每個記錄包括學號、姓名、三科成績。 編寫一個函數input,用來輸入一個學生的數據記錄。 編寫一個函數print,打印一個學生的數據記錄。 在主函數調用這兩個函數,讀取N條記錄輸入,再按要求輸出。 N<100

輸入

學生數量N佔一行 每個學生的學號、姓名、三科成績佔一行,空格分開。

輸出

每個學生的學號、姓名、三科成績佔一行,逗號分開。

樣例輸入 Copy

2
a100 zhblue 70 80 90
b200 newsclan 90 85 75

樣例輸出 Copy

a100,zhblue,70,80,90
b200,newsclan,90,85,75

關於這個循環使用,得多說幾句,你不在for循環前面加Stirng temp = scan.nextLine();時候,你會發現,接收次數總是會少一次,這個被“吞掉的”的次數去哪兒了呢?經仔細推敲發現,在第一次我們接受了一次int類型的整數,它把後面的那個回車當作一次輸入給接收掉,於是,我們的次數少了一次。

解法1:replace(char oldchar,char newchar);

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // TODO 自動生成的方法存根
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        String temp = scan.nextLine();
        //StringBuffer out = new StringBuffer();
        for(int i=0;i<n;i++) {
            String rec = scan.nextLine();
            rec.trim();
            String out = rec.replace(' ', ',');
            System.out.println(out);
        }
    }

}

解法2:split正則匹配

我看網上很多解釋比較詳細,其實簡單來說,就是根據你方法的參數,把你的字符串分割成字符串數組。

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // TODO 自動生成的方法存根
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        String temp = scan.nextLine();
        //StringBuffer out = new StringBuffer();
        String[] rec = new String[101];
        for(int i=0;i<n;i++) {
            String trf = scan.nextLine();
            rec=trf.split(" ");
            for(int j = 0;j<rec.length-1;j++) {
                System.out.print(rec[j]+",");
            }
            System.out.println(rec[rec.length-1]);
        }
    }

}

解法3:我最開始的解法,不怎麼推薦。

import java.util.Arrays;
import java.util.Scanner;


public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        String[] acc = new String[101];
        //int cou = 0;
        String c=scan.nextLine();
        for(int i=0;i<n;i++){
            acc[i]=scan.nextLine();
            //System.out.println(acc[i]+" "+i);
            //scan.next();
        }
        for(int j=0;j<n;j++){
            for(int k=0;k<acc[j].length();k++){
                if(acc[j].charAt(k)==' '){
                    //acc[j].replace(' ', ' ');
                    System.out.printf("%c", ',');
                }else{
                    System.out.printf("%c", acc[j].charAt(k));
                }
            }
            System.out.println();
        }
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章