【问题标题】:String array iteration in Java [duplicate]Java中的字符串数组迭代[重复]
【发布时间】:2020-10-16 11:57:07
【问题描述】:

在这个 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]);
    }
}

【问题讨论】:

标签: java arrays string iteration java.util.scanner


【解决方案1】:

问题与.nextInt();函数有关。

当您键入一个数字并按 Enter 键时,程序会收到该数字和一个换行符 (\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]);
}

【讨论】:

  • 感谢您的解决方案,它帮助我更好地理解了背后的原因?
【解决方案2】:

所以我假设您每次都在新行中输入您的输入(包括元素数量的值)。您可以做的就是坚持使用.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]);
    }
}

【讨论】:

    猜你喜欢
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2012-01-06
    • 2011-09-24
    相关资源
    最近更新 更多