JAVA中的FOR循环数组,无法正常工作

时间:2018-06-11 21:39:10

标签: java arrays

有人可以指出我的程序有什么问题吗?

我已经完成了大部分工作,但我似乎无法找到它的错误。

它不会要求用户为每门课程提供“输入你的成绩”提示。

这是针对学校的阵列分配。这是我的代码。

我很难弄清楚我在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
    }
  }
}

3 个答案:

答案 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

希望这有帮助!