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