问题 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();
        }
    }

}

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