java编写程序

编写程序,先输入学生的数量,再根据数量输入学生的姓名和成绩,最后按照成绩降序打印输出所有学生的信息。

package com.xrom.ssh;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

public class test {
static class personIn{
private String name;
private Integer score;
public personIn(String name, Integer score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
}
public static void main(String[] args) {
Pattern r = Pattern.compile("[1-9]\\d*");
Scanner in=new Scanner(System.in);
Integer count=0;
String countStr="";
do {
System.out.println("请输入学生数:");
countStr=in.next();
if(!r.matcher(countStr).matches())
System.out.println("输入不正确");
} while (!r.matcher(countStr).matches());
count=Integer.valueOf(countStr);
countStr="";
String name="";
Integer score=0;
List<personIn> list=new ArrayList<>();
for (int i = 0; i < count; i++) {
System.out.println("请输入第"+(i+1)+"位同学的姓名:");
name=in.next();
do {
System.out.println("请输入"+name+"的成绩:");
countStr=in.next();
if(!r.matcher(countStr).matches())
System.out.println("输入不正确");
} while (!r.matcher(countStr).matches());
score=Integer.valueOf(countStr);
list.add(new personIn(name, score));
}
List<personIn> list2=list.stream().sorted(Comparator.comparing(personIn::getScore).reversed()).collect(Collectors.toList());
list2.forEach(v->System.out.println(v.getName()+"  "+v.getScore()));
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-11-27
import java.util.Scanner;

public class P {
public static void main(String[] args) {
final String NewLine=System.getProperty("line.separator");
Scanner sc=new Scanner(System.in);
boolean swap=true;
String[] names;
int[] scores;
int sorted=0,n,s;
String str;

System.out.println("请输入学生的人数:");
n=sc.nextInt();
names=new String[n];
scores=new int[n];
for(int i=0;i<n;i++) {
System.out.printf("请输入第%d个学生的姓名 成绩:",i+1);
names[i]=sc.next();
scores[i]=sc.nextInt();
}
//冒泡排序
while(swap) {
swap=false;
for(int i=0;i<scores.length-1-sorted;i++) {
if(scores[i]<scores[i+1]) {
s=scores[i];
scores[i]=scores[i+1];
scores[i+1]=s;
str=names[i];
names[i]=names[i+1];
names[i+1]=str;
swap=true;
}
}
sorted++;
}
System.out.println("按成绩降序排序后,学生的信息如下:");
for(int i=0;i<n;i++) {
System.out.printf("%s\t%d%s",names[i],scores[i],NewLine);
}
sc.close();
}
}追答

本回答被网友采纳
第2个回答  2018-11-27
你这要求都说的这么混乱,还是放弃编程把追问

老师的题目而已 我猜想应该是 先输入你要输入几个学生 然后在循环出相应的输入
最后打印出成绩 降序排列,你是怎么想的呢

第3个回答  2018-11-27
你在说的清楚点,数量怎么与学生姓名和成绩挂钩,
或者发题
第4个回答  2018-11-27
??
相似回答