Java 在我的while循环中查找百分比不是';它不能正常工作。嵌套while循环是否正常?

Java 在我的while循环中查找百分比不是';它不能正常工作。嵌套while循环是否正常?,java,if-statement,while-loop,java.util.scanner,decimalformat,Java,If Statement,While Loop,Java.util.scanner,Decimalformat,我正在努力学习java,而不是循环。我正在尝试制作一个程序,计算一组学生通过考试的分数,输出输入的总分数,分数高于69的通过考试的次数,并显示通过考试的百分比 我遇到的问题是,我似乎无法正确获得输出的百分比。它一直显示0.0。以下是迄今为止我想到的最好的代码 嵌套while循环是一种好的编码方式吗?有没有更简单的方法来缩短我的程序?谢谢 import java.util.Scanner; 导入java.text.DecimalFormat; 公共类CountPassingCores{ 公共静态v

我正在努力学习java,而不是循环。我正在尝试制作一个程序,计算一组学生通过考试的分数,输出输入的总分数,分数高于69的通过考试的次数,并显示通过考试的百分比

我遇到的问题是,我似乎无法正确获得输出的百分比。它一直显示0.0。以下是迄今为止我想到的最好的代码

嵌套while循环是一种好的编码方式吗?有没有更简单的方法来缩短我的程序?谢谢

import java.util.Scanner;
导入java.text.DecimalFormat;
公共类CountPassingCores{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
//将百分比输出格式设置为小数点后一位。
DecimalFormat df=新的DecimalFormat(“####,##0.0”);
//统计输入分数的次数。及格分数不为零
//在这里考虑。
整数计数=0;
//用户输入的分数。
智力得分=0;
//通过测试的班级的百分比。通过分数为70分和
//上面。
通过考试的两倍百分比=0.0;
//通过测试的总数。通过分数为70分及以上。
int numberOfTestsPassed=0;
System.out.println(“此程序统计通过的次数”
+“测试分数。(-1表示退出)\n”);
while(分数!=-1){
System.out.print(“输入第一个测试分数:”);
score=scan.nextInt();
同时(计数!=-1&&score>0){
System.out.print(“输入下一个测试分数:”);
score=scan.nextInt();
计数++;
如果(计数==-1)
打破
否则如果(分数>69)
numberOfTestsPassed++;
类别通过百分比=(numberOfTestsPassed/计数);
}
}
System.out.println(“\n您输入了”+count+“分数”);
System.out.println(“通过考试的分数为”
+numberOfTestsPassed+”;
System.out.println(df.format(通过分类的百分比)
+%的学生通过了考试;
}
}

这是因为您正在将
int
int
分开。这将只导致
int

若要获得正确的结果,请将任意一个强制转换为
double

percentOfClassPassed = ((double) numberOfTestsPassed / count);

<>你的代码不考虑92作为一个测试通过的分数,因为你没有增加在第一个while循环中的TestBuffScript的值。下面是我在您的代码片段中所做的一些更改:

    while (score != -1) {
        System.out.print("Enter the first test score:  ");
        score = scan.nextInt();
        if(score > 69)
        numberOfTestsPassed++;
        while (count != -1 && score > 0) {
            System.out.print("Enter the next test score:  ");
            score = scan.nextInt();
            count++;
            if (score == -1)
                break;
            else if (score > 69)
                numberOfTestsPassed++;
        }
         percentOfClassPassed = ((double)numberOfTestsPassed * 100 / count); 
    }

它为所有输入提供正确的输出

你听说过整数除法吗?如果你不试试谷歌,你就会明白你的问题。啊,我明白了,我还没有学到很多关于类型转换的知识。谢谢。无论我输入的分数是多少,我似乎都得到了相同的结果。0.5%。有人知道我添加后的原因吗。通过类的百分比=((两倍)通过的测试次数/计数);它现在输出0.5%?你能再帮我一次吗?它给了我正确的答案。代码的一个问题是,即使我给出退出的
-1
,您也在计算百分比。使用
if(分数==-1)代替
if(计数==-1)
。另外,由于要四舍五入到小数点后一位,所以只能得到近似值。非常感谢。我让它正常工作了。我不认为要增加额外的if。为什么numberOfTestsPassed没有增加两次,因为有两次?我不知道该如何解决数学部分。谢谢