Java 检查输入字符串的名称,如果其中一个不是文本文件,这是我的代码,但它是无效的

Java 检查输入字符串的名称,如果其中一个不是文本文件,这是我的代码,但它是无效的,java,Java,我的文本文件包括: 汤姆、玛丽、埃里克、洛克、凯文、本、萨利 public static void main(String[] args) throws IOException { Scanner sc = new Scanner (new FileReader("name.txt")); String Name; Scanner in = new Scanner(System.in); System.out.println("Enter a name:");

我的文本文件包括: 汤姆、玛丽、埃里克、洛克、凯文、本、萨利

public static void main(String[] args) throws IOException 
{

   Scanner sc = new Scanner (new FileReader("name.txt"));
   String Name;
   Scanner in = new Scanner(System.in);

   System.out.println("Enter a name:");
   Name= in.nextLine();


   String name = null;
   while(sc.hasNext())
   {
    int i=0;
    name= sc.next();   
    String [] Str=name.split(",");

    if (Name.equals(Str[i]))
    {
        System.out.println("Yes");
    }       
    else
    {
        System.out.println("No");
    }
    if (i<Str.length)
    {
        i++;
    }

 }
publicstaticvoidmain(字符串[]args)引发IOException
{
Scanner sc=新扫描仪(新文件阅读器(“name.txt”);
字符串名;
扫描仪输入=新扫描仪(系统输入);
System.out.println(“输入名称:”);
Name=in.nextLine();
字符串名称=null;
while(sc.hasNext())
{
int i=0;
name=sc.next();
字符串[]Str=name.split(“,”);
if(Name.equals(Str[i]))
{
System.out.println(“是”);
}       
其他的
{
系统输出打印项次(“否”);
}

如果(i你的代码将只检查
字符串
数组中的第一个单词的意思
Tom
。如果你想检查数组中的每个单词,请使用
for
循环。如果你输入
mary
,那么它将与
Tom
进行比较,因此回答

while(sc.hasNext())
   {
    name= sc.next();   
    String [] Str=name.split(",");
    for(String s: Str){
    if (Name.equals(s))
    {
        System.out.println("Yes");
    }       
    else
    {
        System.out.println("No");
    }
    }//for missed. otherwise it will check only the first word in the String array
    }
编辑: 还有一种检查方法

while(sc.hasNext())
   {
    name= sc.next(); //get each line from text file
    String [] Str=name.split(",");
    if(Arrays.asList(Str).contains(Name))//check whether Name contains or not
    System.out.println("Yes");//If array contains the given input then Yes
    else
    System.out.println("No");//Otherwise No
    }

您的代码将只检查
字符串
数组中的第一个单词means
Tom
。如果要检查数组中的每个单词,请使用
for
循环。如果您输入
mary
,则它将与
Tom
进行比较,因此请回答

while(sc.hasNext())
   {
    name= sc.next();   
    String [] Str=name.split(",");
    for(String s: Str){
    if (Name.equals(s))
    {
        System.out.println("Yes");
    }       
    else
    {
        System.out.println("No");
    }
    }//for missed. otherwise it will check only the first word in the String array
    }
编辑: 还有一种检查方法

while(sc.hasNext())
   {
    name= sc.next(); //get each line from text file
    String [] Str=name.split(",");
    if(Arrays.asList(Str).contains(Name))//check whether Name contains or not
    System.out.println("Yes");//If array contains the given input then Yes
    else
    System.out.println("No");//Otherwise No
    }
试试这个,它管用

public static void main(String[] args) throws IOException 
{

   Scanner sc = new Scanner (new FileReader("name.txt"));
   String Name;
   Scanner in = new Scanner(System.in);

   System.out.println("Enter a name:");
   Name= in.nextLine();


   String name = null;

    name= sc.next();  

    String [] Str=name.split(",");
   int flag=0;
   for(String sd:Str)
   {    

    if (Name.equals(sd))
    {

        flag=1;
        break;
    }       
    else
    {
       continue;
    }


   }
   if(flag==1) 

   System.out.println("yes");
   else 
   System.out.println("no");

   }
}
试试这个,它管用

public static void main(String[] args) throws IOException 
{

   Scanner sc = new Scanner (new FileReader("name.txt"));
   String Name;
   Scanner in = new Scanner(System.in);

   System.out.println("Enter a name:");
   Name= in.nextLine();


   String name = null;

    name= sc.next();  

    String [] Str=name.split(",");
   int flag=0;
   for(String sd:Str)
   {    

    if (Name.equals(sd))
    {

        flag=1;
        break;
    }       
    else
    {
       continue;
    }


   }
   if(flag==1) 

   System.out.println("yes");
   else 
   System.out.println("no");

   }
}

不,但是我输入了mary,这是文本文件的第二个值,它会打印“No”,我不知道为什么java区分大小写,
Name
不是
Name
的同义词。你错过了
for
循环。不,但是我输入了mary,这是文本文件的第二个值,它会打印“No”,我不知道为什么Java区分大小写,
Name
不是
Name
的同义词。您错过了
for
循环。我尝试了,但代码将打印Yes-No-No-No-NoSince它(Name)与字符串数组中的每个值进行比较。请参阅我的编辑。我尝试了,但代码将打印Yes-No-No-NoSince它(Name)正在和字符串数组中的每个值进行比较。请参阅我的编辑。