我的目标是让用户输入类别的名称,该类别的等级以及该类别的权重。
从理论上讲,除了我的第一个循环永远不会结束之外,所有事情都应该运行良好。
这是我到目前为止的代码:
package gradecalculator;
import java.util.Scanner;
public class GradeCalculator
{
public static void main(String[] args)
{
String categoryName = null;
double categoryGrade;
double categoryWorth;
double Grade = 0;
String[] nameArray = new String[10];
double[] gradeArray = new double[10];
double[] worthArray = new double[10];
double[] categoryArray = new double[10];
int c = 0;
int c1 = 0;
Scanner entry = new Scanner(System.in);
while(!"Quit".equals(categoryName))
{
categoryName = entry.next();
nameArray[c] = categoryName;
categoryGrade = entry.nextDouble();
gradeArray[c] = categoryGrade;
categoryWorth = entry.nextDouble();
worthArray[c] = categoryWorth;
categoryArray[c] = finalCategory(categoryGrade, categoryWorth);
c++;
}
while(c != 0)
{
System.out.printf("%S:\t%f%\tWorth: %f\n", nameArray[c1], gradeArray[c1], worthArray[c1]);
c--;
c1++;
}
while(c1 != 0)
{
Grade = Grade + categoryArray[c];
c1--;
c++;
}
}
public static double finalCategory(double Grade, double Worth)
{
return (Grade * (Worth / 100));
}
}
我认为问题已经缩小到:
while(!"Quit".equals(categoryName))
{
categoryName = entry.next();
nameArray[c] = categoryName;
categoryGrade = entry.nextDouble();
gradeArray[c] = categoryGrade;
categoryWorth = entry.nextDouble();
worthArray[c] = categoryWorth;
categoryArray[c] = finalCategory(categoryGrade, categoryWorth);
c++;
}
更具体地说:
while(!"Quit".equals(categoryName))
我要完成的工作是,一旦用户输入thecategoryName
并且结果是单词“ Quit”,则while循环将终止,程序将继续运行。显然这是没有发生的,因此,我非常感谢您为解决该问题提供的帮助。
问题是while循环主体即使在categoryName
is时也继续执行"Quit"
。您可以分配entry.next()
到categoryName
并做了"Quit"
检查都在while循环的条件:
while(!(categoryName = entry.next()).equals("Quit"))
{ ... }
这行必须删除(while循环主体的第一行):
categoryName = entry.next();
您的格式字符串中还有一个问题:
"%S:\t%f%\tWorth: %f\n"
%\t
会尝试为制表符查找转换。如果要%
原样打印,请使用另一个转义%
:
"%S:\t%f%%\tWorth: %f\n"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句