题意:
现有 N(N≤1000) 名同学参加了期末考试,并且获得了每名同学的信息:语文、数学、英语成绩(均为不超过 150 的自然数)。
如果某对学生 <i,j> 的每一科成绩的分差都不大于 5,且总分分差不大于 10,那么这对学生就是“旗鼓相当的对手”。
现在想知道这些同学中,有几对“旗鼓相当的对手”?同样一个人可能会和其他好几名同学结对。
输入格式:
第一行一个正整数 N。
接下来 N 行,每行三个整数,其中第 ii 行表示第 ii 名同学的语文、数学、英语成绩。最先读入的同学编号为 1。
输出格式:
输出一个个整数,表示“旗鼓相当的对手”的对数。
输入样例: 输出样例:
3 2
90 90 90 85 95 90 80 100 91
提示:先创建四个数组,储存三科成绩和总成绩,因为成绩不一定是整数,所以要用Integer.parseInt(in.nextLine())转换为一个基本数据类型,接着就是输入一个正整数表示有几行,
.split函数是具有拆分的作用 之后进行条件判断,输出统计值就好了
import java.util.*; public class Main{ public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner in=new Scanner(System.in); int num=Integer.parseInt(in.nextLine());//转化为一个基本数据类型 int []Chinese=new int[num]; int []math=new int[num]; int []English=new int[num]; int []grade=new int [num]; for(int i=0;i<num;i++) { String a=in.nextLine();//输入一个数 String []arr=a.split(" ");//split函数对数组拆分作用 Chinese[i]=Integer.parseInt(arr[0]); math[i]=Integer.parseInt(arr[1]); English[i]=Integer.parseInt(arr[2]); grade[i]=Chinese[i]+math[i]+English[i]; } int count=0;//统计旗鼓相当的对手的人数 for(int i=0;i<num;i++) { for(int j=i+1;j<num;j++) { //将每位同学的成绩进行相减比较 if(Math.abs(Chinese[i]-Chinese[j])<=5 && Math.abs(math[i]-math[j])<=5 && Math.abs(English[i]-English[j])<=5 && Math.abs(grade[i]-grade[j])<=10) { count++; } } } System.out.println(count); } }