在 IntelliJ IDEA 中,从控制台获取数组输入时,输入键的字符被接受为元素

In IntelliJ IDEA, while taking input in an array from console, character of enter key is accepted as an element

我在 Java 中看到一个数组中线性搜索的例子,我写了这段代码:

import java.util.*;
public class LinearSearch
{
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        System.out.print("Enter no. of members: ");
        int l=sc.nextInt();
        String[] list=new String[l];
        System.out.println("Enter the members: ");
        for(int i=0;i<l;i++)
            list[i]=sc.nextLine();
        System.out.print("\nEnter the member you want to search for: ");
        String ts=sc.nextLine();
        for(int i=0;i<l;i++)
        {
            if(list[i].equalsIgnoreCase(ts))
            {
                System.out.println("The member is at index " + i);
                break;
            }
            if(i==l-1)
                System.out.println("There is no such member");
        }
    }
}

但是在 运行 这段代码中,由于第 10 行的 System.out.println(),回车 return (println() 的)被视为元素index 0。此外,当我输入更多元素时,在每个元素之后我需要按 Enter 键开始下一次迭代,但是这样,Enter 键的回车 return 也被作为输入。这是输出:

Enter no. of members: 5
Enter the members: 
a
b
c

Enter the member you want to search for: e
There is no such member

我做了以下事情来防止它:

System.out.println("Enter the members: ");
int j=0;
String in="";
while(list[l-1]==null)
{
    in=sc.nextLine();
    if(in.equals(String.valueOf((char)10))) //10 being the ASCII code of carriage return
        continue;
    else
    {
        list[j] = in;
        j++;
    }
}

但是这样不行,还是以回车return为元素。有什么办法可以解决这个问题吗?

您需要在 nextInt() 调用后跳行,如@user16320675 在评论中提到的答案

但是,Intellij IDEA 控制台中还有另一个错误,请参阅 answer 跳过备选的 nextLine() 输入。因此,即使在这种情况下您只输入 3 个值但您的数组大小为 5,您的调用也会结束。

参考

你的程序还是正确的。只需在其他终端而不是 IDEA 控制台中测试您的代码