Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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,我对Java编程非常陌生,有人告诉我这是一个很好的网站,可以将我推向正确的方向 为什么在我运行程序时,代码中的所有字母级别选项都会显示出来?我只想显示正确的一个。请帮忙 另外,当输入时,如何使数值显示在同一行上而不返回到下一行 感谢您对Java新手的帮助和见解 /* * To change this license header, choose License Headers in Project Properties. * To change this template file, cho

我对Java编程非常陌生,有人告诉我这是一个很好的网站,可以将我推向正确的方向

为什么在我运行程序时,代码中的所有字母级别选项都会显示出来?我只想显示正确的一个。请帮忙

另外,当输入时,如何使数值显示在同一行上而不返回到下一行

感谢您对Java新手的帮助和见解

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package assignment_1;

/**
 *
 * @author 
 */

import java.util.Scanner;
public class Assignment_1 
{

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
        System.out.println("Welcome to the Letter Grade Convertor Program");
        System.out.println();

        Scanner sc = new Scanner(System.in);

        String choice = "y";
        while (choice.equalsIgnoreCase("y"))
        {

            System.out.println("Enter numerical grade: ");
            int grade = sc.nextInt();
            char letter = 0;
            if(grade <= 100 || grade >= 90)
                letter = 'A';
                System.out.println("Letter grade: " + letter);
            if (grade <= 89 || grade >= 80)
                letter = 'B';
                System.out.println("Letter grade: " + letter);

            if (grade <= 79 || grade >= 70)
                letter = 'C';
                System.out.println("Letter grade: " + letter);

            if(grade <= 69 || grade >= 60)
                letter = 'D';
                System.out.println("Letter grade: " + letter);

            if(grade < 60 || grade <=0)
                letter = 'F';
                System.out.println("Letter grade: " + letter);


            System.out.println("Continue? (y/n): ");
            choice = sc.next();
            System.out.println();
        }
    }
}
/*
*要更改此许可证标题,请在“项目属性”中选择“许可证标题”。
*要更改此模板文件,请选择工具|模板
*然后在编辑器中打开模板。
*/
包分配_1;
/**
*
*@作者
*/
导入java.util.Scanner;
公开课作业1
{
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args)
{
System.out.println(“欢迎使用字母级转换器程序”);
System.out.println();
扫描仪sc=新的扫描仪(System.in);
字符串选择=“y”;
while(choice.equalsIgnoreCase(“y”))
{
System.out.println(“输入数值等级:”);
int grade=sc.nextInt();
字符字母=0;
如果(等级=90)
字母='A';
系统输出打印项次(“字母等级:+字母);
如果(等级=80)
字母='B';
系统输出打印项次(“字母等级:+字母);
如果(等级=70)
字母='C';
系统输出打印项次(“字母等级:+字母);
如果(等级=60)
字母='D';
系统输出打印项次(“字母等级:+字母);

if(等级<60 | |等级使用if else if块作为专用条件:

if (grade <= 100 || grade >= 90) {
     letter = 'A';
     System.out.println("Letter grade: " + letter);
} else if (grade <= 89 || grade >= 80) {
     letter = 'B';
     System.out.println("Letter grade: " + letter);
} else if (grade <= 79 || grade >= 70) {
     letter = 'C';
     System.out.println("Letter grade: " + letter);
} else if (grade <= 69 || grade >= 60) {
     letter = 'D';
     System.out.println("Letter grade: " + letter);
} else if(grade < 60 || grade <= 0) {
     letter = 'F';
     System.out.println("Letter grade: " + letter);
}

如果有多条语句,则应添加方括号。如果保留方括号,则只有第一行属于if条件。因此,将始终执行sout代码。添加方括号时,它是一个块,其中的所有行都属于if条件

if(grade <= 100 || grade >= 90){
     letter = 'A';
     System.out.println("Letter grade: " + letter);
}
if(等级=90){
字母='A';
系统输出打印项次(“字母等级:+字母);
}
然而,始终添加花括号是一个很好的实践

然而,正如@dici所建议的,您可以在末尾打印等级,而不是在所有if条件中添加

像这样

public static void main(String[] args) {
    System.out.println("Welcome to the Letter Grade Convertor Program");
    System.out.println();

    Scanner sc = new Scanner(System.in);

    String choice = "y";
    while (choice.equalsIgnoreCase("y")) {

        System.out.println("Enter numerical grade: ");
        int grade = sc.nextInt();
        char letter = 0;
        if (grade <= 100 || grade >= 90) {
            letter = 'A';
        }

        if (grade <= 89 || grade >= 80) {
            letter = 'B';
        }

        if (grade <= 79 || grade >= 70) {
            letter = 'C';
        }

        if (grade <= 69 || grade >= 60) {
            letter = 'D';
        }

        if (grade < 60 || grade <= 0) {
            letter = 'F';
        }
        System.out.println("Letter grade: " + letter);

        System.out.println("Continue? (y/n): ");
        choice = sc.next();
        System.out.println();
    }
}
publicstaticvoidmain(字符串[]args){
System.out.println(“欢迎使用字母级转换器程序”);
System.out.println();
扫描仪sc=新的扫描仪(System.in);
字符串选择=“y”;
while(choice.equalsIgnoreCase(“y”)){
System.out.println(“输入数值等级:”);
int grade=sc.nextInt();
字符字母=0;
如果(等级=90){
字母='A';
}
如果(等级=80){
字母='B';
}
如果(等级=70){
字母='C';
}
如果(等级=60){
字母='D';
}

如果(grade<60 | | grade显示字母grades,因为您没有使用括号

在Java中,如果在
if
while
块中不使用括号,则只有紧靠其下方的行被视为连接到
if
/
while
块。您所做的基本上是:

“如果此等级与此条件匹配,请将字母设置为”“打印字母”

你应该寻找:“如果这个等级符合条件,将字母设置为这个并打印字母”,这需要使用括号

这意味着您需要的代码如下:

if(grade <= 100 || grade >= 90) {
    letter = 'A';
    System.out.println("Letter grade: " + letter);
}
if (grade <= 89 || grade >= 80) {
    letter = 'B';
    System.out.println("Letter grade: " + letter);
}

if (grade <= 79 || grade >= 70) {
    letter = 'C';
    System.out.println("Letter grade: " + letter);
}

if(grade <= 69 || grade >= 60){
    letter = 'D';
    System.out.println("Letter grade: " + letter);
}

if(grade < 60 || grade <=0){
    letter = 'F';
    System.out.println("Letter grade: " + letter);
}
if(等级=90){
字母='A';
系统输出打印项次(“字母等级:+字母);
}
如果(等级=80){
字母='B';
系统输出打印项次(“字母等级:+字母);
}
如果(等级=70){
字母='C';
系统输出打印项次(“字母等级:+字母);
}
如果(等级=60){
字母='D';
系统输出打印项次(“字母等级:+字母);
}

如果(grade<60 | | grade每个人都已经给了你一个正确的答案,所以我不会重复括号中的部分。但是,我将向你展示最简洁的方法(在一般情况下,因为如果分数是线性的,你可以做得更短)来编写完全相同的逻辑:

int[] intervals = { 60, 70, 80, 90, 100 };
char[] grades = { 'E', 'D', 'C', 'B', 'A' };
int i = 0;

while (grade >= intervals[i] && i < intervals.length) i++;
System.out.println("Letter grade: " + grades[i]);

其他人修正了语法,但很快,我想指出逻辑

if (grade <= 100 || grade >= 90) {
 letter = 'A';
if(等级=90){
字母='A';
您使用的是“| |”运算符,它是or运算符。因此,程序总是会在这里中断if-else语句,因为分数总是低于100。您可以输入5,它会说A。它不应该是“&&”,这样它会检查您想要的范围吗?
如果我遗漏了什么,请告诉我。

或者,您实际上只需要一个println语句。您可以在if语句中设置字母,然后在打印
继续之前在行上执行
System.out.println(“字母等级:+字母”);
行:
prompt。查看PrintStream javadoc,注意print(..)和println(..)之间的区别,println(..)终止了一行,如果您想在同一行中添加内容,这可能不是您想要的。数组和集合对于简化代码非常有用,请检查我的答案:)你总是在打印分数,所以你不需要重复这一部分。我刚刚发现较短的答案实际上是两行
int[] intervals = { 60, 70, 80, 90, 100 };
char[] grades = { 'E', 'D', 'C', 'B', 'A' };
int i = 0;

while (grade >= intervals[i] && i < intervals.length) i++;
System.out.println("Letter grade: " + grades[i]);
char[] grades = { 'E', 'D', 'C', 'B', 'A' };
System.out.println("Letter grade: " + grades[Math.max(0, (grade - 50) / 10)]);
if (grade <= 100 || grade >= 90) {
 letter = 'A';