Java 中的字符串数组迭代

String array iteration in Java

在这个 java 程序中,我尝试不为我的字符串数组获取任何元素 (n),然后迭代那么多次以在我的字符串数组中插入值。但是插入不会到达结束并且不会执行最后一次迭代。例如,如果 n=3 那么它应该迭代三次(0,1,2)以进行插入,但它只做了两次。请帮忙理解enter code here

import java.util.*;
public class Main
{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String[] arr=new String[60];
        System.out.println("Enter no of elements");
        int n=sc.nextInt();
        for(int i=0;i<n;i++) {
            arr[i]=sc.nextLine();
        }
        for(int i=0;i<n;i++)
        System.out.println(arr[i]);
    }
}

问题与 .nextInt(); 功能有关。

当您键入一个数字并按回车键时,程序会收到该数字和一个换行符 (\n)。因此,用 .nextLine() 读取的下一行是 '\n'.

作为解决方法,您可以将 .nextLine() 放在 .nextInt()

正下方
public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    String[] arr=new String[60];
    System.out.println("Enter no of elements");
    int n=sc.nextInt();
    sc.nextLine(); //<-- This line
    for(int i=0;i<n;i++) {
        arr[i]=sc.nextLine();
    }
    for(int i=0;i<n;i++)
    System.out.println(arr[i]);
}

所以我假设您每次都在一个新行中输入您的输入(包括元素数量的值)。您可以做的就是坚持使用 .nextLine(),然后将其转换为 int 作为您的 n 变量,如下所示。

import java.util.*;
public class Main
{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] arr=new String[60];
        System.out.println("Enter no of elements");
        int n = Integer.parseInt(sc.nextLine());
        for(int i = 0;i < n; i++) {
            arr[i] = sc.nextLine();
        }
        for(int i = 0; i < n; i++)
        System.out.println(arr[i]);
    }
}