Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 没有获得期望的输出_Java - Fatal编程技术网

Java 没有获得期望的输出

Java 没有获得期望的输出,java,Java,基本上,我要求用户输入两个考试分数(双倍)。如果两次考试的平均成绩超过90分,则屏幕上会输出一条消息,表示他们得了a,其他平均成绩依次类推 无论我输入什么组合,它总是输出用户已获得“C”等级,即使他们没有 这里的问题是什么 没有编译器错误 package test; import java.util.Scanner; class test3 { public static void main(String args[]) { Scanner zino = new Scanner(Sys

基本上,我要求用户输入两个考试分数(双倍)。如果两次考试的平均成绩超过90分,则屏幕上会输出一条消息,表示他们得了a,其他平均成绩依次类推

无论我输入什么组合,它总是输出用户已获得“C”等级,即使他们没有

这里的问题是什么

没有编译器错误

package test;
import java.util.Scanner;

class test3 {
public static void main(String args[]) {
    Scanner zino = new Scanner(System.in);

    double score1 = 0;
    double score2 = 0;
    double average = 0;

    average = (score1 + score2) / 2 ;

    System.out.println("Enter score 1 ");
     score1 = zino.nextDouble();

     System.out.println("Enter score 2 ");
     score2 = zino.nextDouble();

    if(average > 90)
    {
        System.out.println(average);
        System.out.println("You got an A!");
    }

    else if(average > 80)
    {
        System.out.println(average);
        System.out.println("You got a B.");
    }

    else
    {
        System.out.println(average);
        System.out.println("You got a C.");
    }`
}

}
如果用户输入的两个分数均为100,则输出应为:

一百 你得了A

这就是我得到的:

0.0
你得了C。

你的问题是,在你读取两个分数的值之前,你在计算平均值

average = (score1 + score2) / 2 ;
当您运行此行时,
score1
score2
都是零,因此您将
average
设置为
(0+0)/2
,当然是零

在以后的程序中,您有

score1 = zino.nextDouble();
...
score2 = zino.nextDouble();
score1
score2
设置为用户输入的值。但是你再也不会计算平均值,所以它保持在零

您需要做的是移动行
average=(score1+score2)/2向下,以便在设置
score1
score2
的两行之后运行,将代码平均值=(score1+score3)/2;获取完用户输入后

您的代码应该如下所示:

 System.out.println("Enter score 1 ");
 score1 = zino.nextDouble();

 System.out.println("Enter score 2 ");
 score2 = zino.nextDouble();

 average=(score1+score 3)/2;  

您从不修改
平均值
变量,因此它始终为零。(你说它等于
score1+score2
(两者都初始化为零)除以2
average=(score1+score2)/2;
等于
average=(0+0)/2
…也许你应该在计算平均值之前提示用户分数这行的
average=(score1+score2)/2;
place就在if语句之前。我建议您学习使用调试器逐步检查代码以了解发生了什么。这将对您的编程生涯非常有帮助,并在if语句之前为您节省大量时间和精力。明白了:)