【问题标题】:Finish input to array before printing all在打印所有之前完成对数组的输入
【发布时间】:2011-04-10 08:59:59
【问题描述】:

我正在尝试对数组进行输入,直到它已满,然后打印整个数组。但我无法让循​​环运行,直到数组已满,然后打印全部。

这是我的代码:

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    String[] course = new String [2]; //creating array
    int [] grade = new int [2];

    System.out.println("Input coursename and grade: ");

    for (int i = 0; i < course.length; i++){
            course[i] = input.next();
            grade [i] = input.nextInt();

    if (i == course.length)
        break;

    //System.out.println("\nHow do you want to order course and grade?");
    //System.out.print("   1 - Ascending?\n"
    //               + "   2 - Decending?\n");

    //System.out.println("Name and grade is " + course[i] + " " + grade[i]);
       System.out.println(Arrays.toString(course)+(grade));

    }

  }
}

如何让循环运行然后跳转到打印语句?

【问题讨论】:

    标签: java arrays for-loop


    【解决方案1】:

    循环中的变量i 永远不会等于course.length,因为循环只运行到i &lt; course.length。所以if 块无论如何都是多余的。

    打印语句应该在 for 块之后,否则您将在每次迭代中打印数组。

    public static void main(String[] args) {
    
        Scanner input = new Scanner(System.in);
    
        String[] course = new String [2]; //creating array
        int [] grade = new int [2];
    
        System.out.println("Input coursename and grade: ");
    
        for (int i = 0; i < course.length; i++) {
            course[i] = input.next();
            grade [i] = input.nextInt();
        }
    
       System.out.println(Arrays.toString(course)+(grade));
    }
    

    【讨论】:

    • 谢谢。这可以完成工作。但后来我得到一个漂亮有趣的打印:[ip, er][I@5dccce3c 它只打印课程而不是成绩。我试着用这个代替“System.out.println("Name and Grade is " + course[i] + " " + grade[i]);"但后来我的 IDE 告诉我“找不到变量 i”
    • 你应该这样打印: System.out.println(Arrays.toString(course) + ", " + Arrays.toString(grade));
    • 那是因为变量“i”只在“for”块内可见,不在其外。所以你的 "System.out.println("姓名和成绩是 " + course[i] + " " +grade[i]);"可以放在“}”括号之前,因此它将在“for”循环的每次迭代中打印课程和成绩。或者您可以像我建议的那样在“}”括号后打印整个数组。
    • 完美。谢谢。但是,如果我希望打印出来的内容是:课程等级、课程 1 等级 1、课程 2 等级 2。也可以这样吗?
    • 当然,只需将其放在“}”括号之前: System.out.println("Course " + course[i] + " Grade " + Grade[i]);
    【解决方案2】:

    grade [i] = input.nextInt(); 之后应该有一个}
    并且下面的if 根本不需要。

    【讨论】:

      【解决方案3】:

      如果循环在两个赋值语句之后关闭,它似乎可以完成这项工作。之后的检查没有用,可以删除。

          public static void main(String[] args) {
      
              Scanner input = new Scanner(System.in);
      
              String[] course = new String[2]; // creating array
              int[] grade = new int[2];
      
              System.out.println("Input coursename and grade: ");
      
              for (int i = 0; i < course.length; i++) {
                  course[i] = input.next();
                  grade[i] = input.nextInt();
              }
              System.out.println(Arrays.toString(course) + (grade));
      
          }
      

      【讨论】:

        【解决方案4】:

        if (i == course.length) 是不必要的,因为当 i == length 然后 for 循环完成工作并且 for-loop-body 没有调用所以删除此行并放置而不是关闭循环 "}"

        接下来是打印您的阵列。将最后一行更改为:

        System.out.println(Arrays.toString(course) + Arrays.toString((grade)));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-04-12
          • 1970-01-01
          • 1970-01-01
          • 2019-09-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-13
          相关资源
          最近更新 更多