Java 如何将数字显示为Astrik
因此,我必须将总成绩(我已经计算过)显示为Astrick。输出应该是这样的,Java 如何将数字显示为Astrik,java,Java,因此,我必须将总成绩(我已经计算过)显示为Astrick。输出应该是这样的, A=****** B=****** C=****** D=***** 这是我的代码: import java.io.*; import java.util.*; public class grades { public static final void main(String args[]) throws FileNotFoundException { System.ou
A=******
B=******
C=******
D=*****
这是我的代码:
import java.io.*;
import java.util.*;
public class grades
{
public static final void main(String args[]) throws FileNotFoundException
{
System.out.println("name");
Scanner myScanner = new Scanner(new File("students.txt"));//Creating new scanner object
int lineNumber =1;//Line Number for each student.
while (myScanner.hasNext())
{
String firstName = myScanner.next();//Scanning student first name and storing in the string
String lastName = myScanner.next();// Scanning student last name and storing in the string
String athleteFlag=myScanner.next();//Scanning for verification of athlete and storing in the string
String athlete= "Y";
String notAthlete = "N";
//if else statement to declare if student is a athlete
if (athleteFlag.equals(athlete))
{
athleteFlag="YES";
}
else if(athleteFlag.equals(notAthlete))
{
athleteFlag="NO";
}
int quiz1=myScanner.nextInt();// Grades on Quiz 1
int quiz2=myScanner.nextInt();// Grades on Quiz 2
int quiz3=myScanner.nextInt();// Grades on Quiz 3
int quiz4=myScanner.nextInt();// Grades on Quiz 4
int quiz5=myScanner.nextInt();// Grades on Quiz 5
int test1=myScanner.nextInt();// Grades on Test 1
int test2=myScanner.nextInt();// Grades on Test 2
//student quiz average
double quizAverage = (double)(quiz1+quiz2+quiz3+quiz4+quiz5)/5;
//Overall Numerical Grade
float overallNumericalGrade =(float)(quizAverage+test1+test2)/3;
//Students letter Grade, eligibility and counting number of each grade
String grade;
String eligibility;
int gradeA=0;
int gradeB=0;
int gradeC=0;
int gradeD=0;
int gradeF=0;
if(overallNumericalGrade>=90.0)
{
grade="A";
eligibility ="YES";
gradeA++;
}
else if(overallNumericalGrade>=80.0)
{
grade = "B";
eligibility ="YES";
gradeB++;
}
else if(overallNumericalGrade>=70.0)
{
grade = "C";
eligibility ="YES";
gradeC++;
}
else if(overallNumericalGrade>=60.0)
{
grade = "D";
eligibility ="NO";
gradeD++;
}
else
{
grade = "F";
eligibility ="NO";
gradeF++;
}
System.out.println(lineNumber + " "+lastName+","+firstName+"/ "+athleteFlag+ "/ " + eligibility +
" / " +"Grades on all quiz "+ quiz1+ " "+quiz2+" "+quiz3+" "+ quiz4+" "+quiz5+" "+test1+" "+
test2+ " /" +"quiz average is " + quizAverage +"\n " + "Overall Numerical grade is " +
overallNumericalGrade+" / "+ "Student letter Grade is " + grade);
lineNumber++;
}
}
}
我只是不知道如何输出这个。任何帮助都将受到感谢。提前感谢。假设所有等级的总数为
总体数值等级
,并且您希望在最后一次输出中将其显示为*
(因为这是代码中唯一的输出),您可以这样做
System.out.println(lineNumber + " "+lastName+","+firstName+"/ "+athleteFlag+ "/ " + eligibility +
" / " +"Grades on all quiz "+ quiz1+ " "+quiz2+" "+quiz3+" "+ quiz4+" "+quiz5+" "+test1+" "+
test2+ " /" +"quiz average is " + quizAverage +"\n " + "Overall Numerical grade is " +
String.valueOf(overallNumericalGrade).replaceAll(".", "*")+" / "+ "Student letter Grade is " + grade);
重要的部分在这里
String.valueOf(overallNumericalGrade).replaceAll(".", "*")
其中,我将总值转换为字符串,然后用*
替换所有内容
如果总数不是总体数值等级,则只需对数值进行替换即可
编辑:要回答您的评论,请在此处进行更多解释
String.replaceAll
是一种方法,它替换与给定的正则表达式(regex)
对应的所有内容,该正则表达式由我们作为第二个参数给出(在这种情况下,*
)。我给出的正则表达式只是一个
,它表示除换行符以外的任何字符。因此,String.valueOf(overallNumericalGrade)
将其转换为String
,这样我就可以调用replaceAll
方法,然后用*
替换所有内容
至于第二个问题的答案,您可以再次使用替换项将等级的换行符
替换为一个简单的空格,以便在同一行上显示所有内容。差不多
grade.replaceAll(System.getProperty("line.separator"), " ");
请注意,我使用了System.getProperty(“line.separator”)
而不是char
,这样它就可以在任何系统上工作。我假设所有分数的总和是overallNumericalGrade
?不,这只是他们测验的平均值和测试1和测试2的分数的平均值。我还没有把计数结果输出。正如你所看到的,我把分数计算为A++或B++级,我真的没有得到。我对java相当陌生。你能再解释一下吗。谢谢我面临的另一个问题是,分数输出在每一行输出中都是一个接一个的,因为我从文本文件的不同行扫描变量。如何在一行中输出成绩?thanks@MithunIslam看到我的编辑,希望它有帮助。