有人可以指出我的程序有什么问题吗?
我已经完成了大部分工作,但我似乎无法找到它的错误。
它不会要求用户为每门课程提供“输入你的成绩”提示。
这是针对学校的阵列分配。这是我的代码。
我很难弄清楚我在for
循环中做出的for
循环有什么问题。
该程序应该询问用户他们的课程,然后用户输入他们的课程成绩。
如果可能的话,请告诉我有关我做错的提示。
import java.io.*;
public class StudentMarks {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException{
// TODO code application logic here
//Declare BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//declare variables
int x=0, y=0;
double grade=0.0;
String course;
//ask user how many courses they completed
System.out.println("How many courses have you completed?");
//obtain answer
int completed=Integer.parseInt(br.readLine());
//declare array for course
String courses[]=new String[completed];
//ask user to enter the course names use a FOR loop for this
for(int i=0;i<courses.length;i++)
{
i++;
System.out.println("Please enter course name " + i);
course = br.readLine();
for(int j=i--;j<i;j++)
{
j++;
System.out.println("What is the grade you got for " + course+ " " + j);
//get their answer
grade = Double.parseDouble(br.readLine());
}
}//end for loop
//display to the user the high achievement award qualifiers:
System.out.println("High-Ahcievement Award Qualifiers: \n");
if(grade>93)
{
//output
}
else if(grade<70)
{
System.out.println("Needs Improvement:");
//output
}
}
}
答案 0 :(得分:1)
而不是$ rm -rf /Users/ruxandravasilescu/.git/
使用
i++
您不需要任何嵌套循环
System.out.println("Please enter course name " + (i+1));
改为使用
for(int j=i--;j<i;j++)
{
j++;
System.out.println("What is the grade you got for " + course+ " " + j);
//get their answer
grade = Double.parseDouble(br.readLine());
}
如果您仍然无法理解,请填写完整代码告诉我。
System.out.println("What is the grade you got for " + course);
//get their answer
grade = Double.parseDouble(br.readLine());
答案 1 :(得分:0)
我认为你并不打算在for循环中使用i ++ / j ++(第一个语句)。 循环头的第三个“参数”实际上告诉程序当它到达循环结束时该做什么。因此,每次增加两次。
答案 2 :(得分:0)
你的内循环(使用int j = i--)的条件总是假的,因此它的主体永远不会被执行。
代码行:
j = i--
并不像看起来那么简单,可以分为两行:
j = i;
i = i - 1;
请注意,j设置为i的值,只有之后的才会减少。所以如果j设置为i,然后我变成i - 1,我将比j小一个。那么for循环的条件即j <1。我永远都是假的,所以循环的主体永远不会被执行。
示例:
i = 5;
j = i--;
归结为
i = 5;
j = i; //j is 5
i = i - 1; //i is 4
j < i; //5 < 4 is false, inner for loop not executed
希望这有帮助!