问题描述
X市正在进行歌唱比赛,请你写一个程序计算得分。
每名选手从1到N编号,每名选手的综合成绩由以下几个部分组成:
1.歌唱得分占70%
2.才艺展示得分占20%
3.观众投票得分占10%
4.不超过五分的特殊加分(如果总分超过100分则记为100)
输入格式
第一行一个整数N,表示选手人数
接下来N行,每行四个整数,分别表示歌唱得分,才艺得分,投票得分和加分。
输出格式
输出N行,每行一个数,表示得分(保留一位小数)
样例输入
6
62 50 60 1
77 71 85 3
98 79 98 5
75 62 60 0
99 72 68 4
82 88 89 2
样例输出
60.4
79.6
99.2
70.9
94.5
85.9
思路:这题的难点就在于最后输出的那个部分,其他的地方仔细读题就可。
补充知识点:DecimalFormat("#.0").format(); 保留一位小数输出。
详情:https://www.cnblogs.com/yelongsan/p/5482774.html
import java.text.DecimalFormat;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
double ans = 0;
for (int i = 0; i < n; i++) {
int sing = scanner.nextInt(); // 歌曲成绩
int skill = scanner.nextInt(); // 才艺成绩
int vote = scanner.nextInt(); // 投票成绩
int bonus = scanner.nextInt(); // 加分成绩
ans = sing * 0.7 + skill * 0.2 + vote * 0.1 + bonus; // 题目算式
if (ans > 100) { // 成绩大于100
ans = 100; // 直接给100
}
System.out.println(new DecimalFormat("#.0").format(ans)); // 保留一位小数输出
}
}
}
思路:直接利用三目运算符返回是否是大于100的成绩即可~~
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {
int sing = scanner.nextInt();
int skill = scanner.nextInt();
int vote = scanner.nextInt();
int bonus = scanner.nextInt();
double sum = sing * 0.7 + skill * 0.2 + vote * 0.1;
double ans = sum + bonus;
System.out.printf("%.1f\n", ans > 100.0 ? 100.0 : ans); // 三目判断输出
}
}
}