【问题标题】:I have to print the array , but for each loop is not working我必须打印数组,但是对于每个循环都不起作用
【发布时间】:2019-10-07 15:17:18
【问题描述】:
import java.util.Scanner;

public class TeacherCoins {

    public static void main(String[] args){

    int k;

    System.out.print("Enter total number of coins :");
    Scanner sc = new Scanner(System.in);
    k =sc.nextInt();

    int [] arr= new int[k-1];
    System.out.print("Enter array :");

    for(int i=0;i<=(k-1);i++) 
    {

        Scanner sc1 = new Scanner(System.in);
        arr[i] =sc1.nextInt();

    }

    for(int element :arr)
    {
    System.out.println("Print array");
    System.out.println(element);

    }
}

我正在使用 Scanner 类提供输出。但是没有打印数组。

【问题讨论】:

  • 请修正代码格式。为什么要在 for 循环体内声明 Scanner 对象?为什么要使用 k - 1 元素创建数组?
  • 作为一个小提示,您不需要构建第二个扫描仪。您可以继续使用以前的扫描仪sc
  • 我必须给数组输入,所以我创建了扫描仪类。我已移除并尝试关闭扫描仪。它仍然没有打印数组。
  • 你溢出了数组,因为它比它需要的小一个元素。所以你得到一个终止你的程序的异常。 int [] arr= new int[k]; 修复它。

标签: java


【解决方案1】:

您无需在循环内再次声明 Scanner。你应该做的另一件事是确保你的代码,是在循环if i 上有这个条件。最后,我将“打印数组”消息移到了最后一个 for 之外。

public class TeacherCoins {

    public static void main(String[] args){

        int k;

        System.out.print("Enter total number of coins :");
        Scanner sc = new Scanner(System.in);
        k =sc.nextInt();

        int [] arr = new int[k];
        System.out.print("Enter array :");

        for(int i=0; i<arr.length; i++) {
            arr[i] =sc1.nextInt();
        }

        System.out.println("Print array");
        for(int element :arr){
            System.out.println(element);
        }
    }
}

【讨论】:

    【解决方案2】:

    这段代码有两个问题,
    1. 您不需要为每个用户输入创建一个新的Scanner 对象。
    2. 声明数组大小为k-1,然后要求用户输入k 次。

        public static void main(String[] args) {
            int k;
            System.out.print("Enter total number of coins :");
            Scanner sc = new Scanner(System.in);
            k = sc.nextInt();
    
            int[] arr = new int[k];  // To store k elements, you need k sized array
            System.out.print("Enter array :");
            for (int i = 0; i <= (k - 1); i++) {
                // Scanner sc1 = new Scanner(System.in); / / Not required here
                arr[i] = sc.nextInt();
    
            }
            System.out.println("Print array");
            for (int element : arr) {
                System.out.println(element);
            }
        }
    

    【讨论】:

    • 输入硬币总数:8 输入数组:1 2 3 4 5 6 7 8 9 线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 8 在 TeacherCoins.main(TeacherCoins.java:19 )
    • 这是异常的输出。我怎样才能停止扫描仪。我也有用户scanner.close。它一直在问,如果我给出第 9 个数字,它最终会出现异常,下一个代码没有执行。
    • @Shafi 它对我来说很好用。此外,数组size 应与number of array 元素相同。
    • 你给total number of coins :8,但数组有9个元素1 2 3 4 5 6 7 8 9
    【解决方案3】:

    您的代码中只有一个问题,您将数组的大小声明为 k-1,而不是为 k 个元素声明它。您只需在新行中给出每个输入。有关更多信息,请参阅:Scanner class。 并且您的 for each 循环是正确且有效的。

    import java.util.Scanner;
    public class TeacherCoins {
        public static void main(String[] args){
        int k;
        System.out.print("Enter total number of coins :");
        Scanner sc = new Scanner(System.in);
        k =sc.nextInt();
        int [] arr= new int[k];//it was giving java.lang.ArrayIndexOutOfBoundsException
        System.out.print("Enter array :");
        for(int i=0;i<=(k-1);i++)
        {
            Scanner sc1 = new Scanner(System.in);//not required
            arr[i] =sc1.nextInt();//use arr[i] =sc.nextInt();
        }
    
        for(int element :arr)
        {
            System.out.println("Print array");
            System.out.println(element);
        }
    }
    

    } 上面的代码将起作用。但是您不需要新的扫描仪对象来获取输入,只创建单个对象即可。

    【讨论】:

      【解决方案4】:
      import java.util.Scanner;
      
      public class TeacherCoins {
      
          public static void main(String[] args) {
      
              int k;
      
              System.out.print("Enter total number of coins :");
              Scanner sc = new Scanner(System.in);
              k = sc.nextInt();
      
              int[] arr = new int[k];
      
              System.out.print("Enter array :");
      
              for (int i = 0; i < arr.length; i++) {
                  arr[i] = sc.nextInt();
      
              }
              sc.close();
      
              System.out.println("Print array");
      
              for (int element : arr) {
      
                  System.out.println(element);
              }
      
              for (int i = 0; i < arr.length; i++) {
                  int count = 0;
                  for (int j = 0; i < arr.length; j++) {
                      arr[i] = arr[j];
                      count++;
      
                  }
                  System.out.println(arr[i] + " " + count);
      
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多