Write a static method named
plusScores
that accepts as a parameter a Scanner containing a series of lines that represent student records. Each student record takes up two lines of input. The first line has the student's name and the second line has a series of plus and minus characters. Below is a sample input:Kane, Erica --+-+ Chandler, Adam ++-+ Martin, Jake +++++++ Dillon, Amanda ++-++-+-
The number of plus/minus characters will vary, but you may assume that at least one such character appears and that no other characters appear on the second line of each pair. For each student you should produce a line of output withthe student's name followed by a colon followed by the percent of plus characters. For example, if the input above is stored in a Scanner called input, the call of plusScores(input); should produce the following output:
Kane, Erica: 40.0% plus Chandler, Adam: 75.0% plus Martin, Jake: 100.0% plus Dillon, Amanda: 62.5% plus
I'm looking for alternative ways of solving this problem, and of course any potential bugs or pitfalls my code may have. If you have something interesting to share, please do! I'm new to programming and am eager to see other ways of accomplishing a problem such as this one. Here's my code:
public static void plusScores(Scanner sc) {
while (sc.hasNextLine()) {
String line = sc.nextLine();
if (!line.startsWith("+") && !line.startsWith("-")) {
System.out.print(line);
} else {
int plus = 0;
int minus = 0;
for (char ch : line.toCharArray()) {
if (ch == '+') {
plus++;
} else {
minus++;
}
}
float percentPlus = ((float) (plus) / (plus + minus)) * 100;
System.out.format(": %.1f%% plus\n", percentPlus);
}
}
}