1.结构体的定义
主函数类外:
public class Zz {
static class node
{
int num;
String name;
int yw;
int ss;
int yy;
int sum;
int One;
int Two;
}
主函数类内:
node[]node1=new node[50];
for(int i=1;i<=n;i++)
{
node1[i]=new node();//<-注意这里
node1[i].num=cin.nextInt();
node1[i].name=cin.next();
node1[i].yw=cin.nextInt();
node1[i].ss=cin.nextInt();
node1[i].yy=cin.nextInt();
node1[i].sum=node1[i].yw+node1[i].ss+node1[i].yy;
S+=node1[i].sum;
}
2.结构体的排序
定义一个(结构体)类实现Comparable接口,然后在类中重写compareTo()方法(自定义排序哦),最后用Arrays.sort()进行排序。
class mycompare implements Comparator<node>{
@Override
public int compare(node o1, node o2) {
if(o1.x == o2.x){
return o1.y-o2.y; //返回y较大的
}
return o1.x-o2.x; //返回x较大的
}
}
Arrays.sort(node1,0,n,new mycompare())
3.实例
设某个班有n个学生,期末考试有多门课程,打印出一二等奖学金的学生的学号、姓名、各科成绩
package zkj;
import java.io.*;
import java.math.*;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.TreeSet;
import java.util.Iterator;
import java.util.Comparator;
public class Zz {
static class node
{
int num;
String name;
int yw;
int ss;
int yy;
int sum;
int One;
int Two;
}
class mycompare implements Comparator<node>{
@Override
public int compare(node o1, node o2) {
return o1.sum-o2.sum;
}
}
public static void main(String[] args) throws IOException {
int n;
Scanner cin=new Scanner (System.in);
n=cin.nextInt();
node[]node1=new node[50];
int S=0;
for(int i=1;i<=n;i++)
{
node1[i]=new node();
node1[i].num=cin.nextInt();
node1[i].name=cin.next();
node1[i].yw=cin.nextInt();
node1[i].ss=cin.nextInt();
node1[i].yy=cin.nextInt();
node1[i].sum=node1[i].yw+node1[i].ss+node1[i].yy;
S+=node1[i].sum;
}
double one=S*0.2;
double two=S*0.1;
for(int i=1;i<=n;i++)
{
if(node1[i].sum>one)
{
node1[i].One=1;
}
else
{
node1[i].Two=1;
}
if(node1[i].sum>two)
{
node1[i].Two=1;
}
else
{
node1[i].Two=0;
}
}
for(int i=1;i<=n;i++)
{
if(node1[i].One==1)
{
System.out.print("姓名:"+node1[i].name+"学号:"+node1[i].num+"语文成绩"+node1[i].yw+"数学成绩"+node1[i].ss+"英语成绩"+node1[i].yy+"该同学获得了"+node1[i].One+"等奖学金");
System.out.println();
}
if(node1[i].Two==1)
{
System.out.print("姓名:"+node1[i].name+"学号:"+node1[i].num+"语文成绩"+node1[i].yw+"数学成绩"+node1[i].ss+"英语成绩"+node1[i].yy+"该同学获得了"+node1[i].Two+"等奖学金");
System.out.println();
}
}
}
}