概述
问题 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();
}
}
}
最后
以上就是知性饼干为你收集整理的问题 B: C语言-成绩排序的全部内容,希望文章能够帮你解决问题 B: C语言-成绩排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复