在 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 控制台中测试您的代码
我在 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 控制台中测试您的代码