Java成绩计算器

酷猫

我的目标是让用户输入类别的名称,该类别的等级以及该类别的权重。

从理论上讲,除了我的第一个循环永远不会结束之外,所有事情都应该运行良好。

这是我到目前为止的代码:

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循环主体即使在categoryNameis继续执行"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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章