import java.util.Scanner;
class Details {
int num;
String NAMES[][];
double MARKS[][];
double TOTAL[];
String GRADES[];
void getData() {
Scanner ob = new Scanner(System. in );
System.out.print("Enter the number of students : ");
num = ob.nextInt();
NAMES = new String[num][2];
MARKS = new double[num][4];
for (int x = 0; x
System.out.print("First Name : ");
NAMES[x][0] = ob.next();
System.out.print("Last Name : ");
NAMES[x][1] = ob.next();
loop1:
for (int p = 1; p <= 1; p++)
{
System.out.print("\tFirst Test Marks : ");
MARKS[x][0] = ob.nextDouble();
if ((MARKS[x][0] < 0) || (MARKS[x][0] > 15))
{
System.out.println("Marks should be within 0 to 15");
continue loop1;
}
}
loop2:
for (int p = 1; p <= 1; p++)
{
System.out.print("\tMid Term Marks : ");
MARKS[x][1] = ob.nextDouble();
if (MARKS[x][1] < 0 || MARKS[x][1] > 20)
{
System.out.println("Marks should be within 0 to 20");
continue loop2;
}
}
loop3:
for (int p = 1; p <= 1; p++)
{
System.out.print("\tLab Test Marks : ");
MARKS[x][2] = ob.nextDouble();
if (MARKS[x][2] < 0 || MARKS[x][2] > 15)
{
System.out.println("Marks should be within 0 to 15");
continue loop3;
}
}
loop4:
for (int p = 1; p <= 1; p++)
{
System.out.print("\tFinal Marks : ");
MARKS[x][3] = ob.nextDouble();
if (MARKS[x][3] < 0 || MARKS[x][3] > 50)
{
System.out.println("Marks should be within 0 to 20");
continue loop4;
}
}
System.out.println();
}
}
public void total() {
TOTAL = new double[num];
for (int x = 0; x
TOTAL[x] = MARKS[x][0] + MARKS[x][1] + MARKS[x][2] + MARKS[x][3];
}
}
public void grades() {
GRADES = new String[num];
for (int x = 0; x
if (TOTAL[x] >= 80) {
GRADES[x] = "A";
} else if (TOTAL[x] >= 70) {
GRADES[x] = "B";
} else if (TOTAL[x] >= 60) {
GRADES[x] = "C";
} else if (TOTAL[x] >= 50) {
GRADES[x] = "D";
} else {
GRADES[x] = "F";
}
}
}
void print() {
System.out.println("\t\t\tRESULT SHEET\n\n\tFirst Name\tLast Name\tGrade");
for (int x = 0; x
System.out.println("\t" + NAMES[x][0] + "\t\t" + NAMES[x][1] + "\t\t" + GRADES[x]);
}
}
}
class test {
public static void main(String[] args) {
Details data = new Details();
data.getData();
data.total();
data.grades();
data.print();
}
}
使用continue关键字的问题,它不起作用天气我们给错了输入
答案 0 :(得分:2)
我认为您不了解continue
关键字的含义。您使用的continue
在当前位置不会执行任何操作。以此段为例:
loop1:
for (int p = 1; p <= 1; p++)
{
System.out.print("\tFirst Test Marks : ");
MARKS[x][0] = ob.nextDouble();
if ((MARKS[x][0] < 0) || (MARKS[x][0] > 15))
{
System.out.println("Marks should be within 0 to 15");
continue loop1;
}
}
当if条件成功时,它会输出一些东西,然后继续循环loop1的下一次。无论如何,它将继续下一次迭代,因为continue
关键字位于循环段的末尾。但是,由于所有for循环只运行一次,没有下一次迭代,循环停止。
也许更好的解决方案是使用这样的while循环:
while(true) {
System.out.print("\tFirst Test Marks : ");
MARKS[x][0] = ob.nextDouble();
if ((MARKS[x][0] < 0) || (MARKS[x][0] > 15)) {
System.out.println("Marks should be within 0 to 15");
} else {
break;
}
}
答案 1 :(得分:0)
您的问题是您的循环长度为1:loop1: for (int p = 1; p <= 1; p++)
重新输入后,p<=1
的计算结果为false,退出循环。我会建议这样的事情:
boolean firstConditionSatisfied = false;
while (!firstConditionSatisfied) {
System.out.print("\tFirst Test Marks : ");
MARKS[x][0] = ob.nextDouble();
if ((MARKS[x][0] < 0) || (MARKS[x][0] > 15)) {
System.out.println("Marks should be within 0 to 15");
} else {
firstConditionSatisfied = true;
}
}
答案 2 :(得分:0)
我假设您不理解continue
的作用,它用于跳过循环的剩余部分并重新开始。只有当你有嵌套循环并想要continue
(或break
外部循环)时,才需要标记循环。
(Offtopic:我建议使用名字,姓氏和标记创建一个像Student
这样的新类,以便代码更容易阅读。)
答案 3 :(得分:0)
Java规则#1:如果使用标签和跳转,则代码的结构是错误的。没有例外。
因此,要解决此问题,您应该将问题更改为:“如何正确修改此代码以删除跳转?”