0

当我需要打印名称列表时,我想使用布尔值来搜索重复项。所以我需要编写一个程序来读取文本文件中的名称并将其打印到控制台。但是编译器在这种情况下不起作用。我不知道为什么?你们能帮帮我吗?

import java.io.*;
import java.util.*;

public class NameSorter 
{

  public static void main(String[] args) throws Exception
  {
    BufferedReader cin, fin;
    cin = new BufferedReader(new InputStreamReader(System.in));

     //Description
    System.out.println("Programmer: Minh Nguyen");
    System.out.println("Description: This program is to sort names stored in a file.");
    System.out.println();
    //Get input
    String fileName;
    System.out.print("Enter the file's name: ");
    fileName = cin.readLine();
    fin = new BufferedReader(new FileReader(fileName));
    int nNames = 0;
    String[] name = new String[8];

    //initialize array elements
    for(int i=0; i<name.length;i++)
    {
        name[i]=" ";
    }
    // read text file
    while(fin.ready())
    {
      String aName = fin.readLine();
      String temp =  aName;
      boolean check;
      if(temp.compareTo(" ")>0)
      {

          for(int i=0; i<name.length;i++)
          {
              if(temp.compareToIgnoreCase(name[i])==0)
              {
                  check = true;
                  break;
              }


          }

      }               
          if(nNames<name.length&& check = false)
          {
              name[nNames++] = temp;
          }

      }


    }
    fin.close();

    // Sort the names aphabetically.
    for(int i=0;i<nNames; i++)
    {
      int j;
      for(j=i+1;j<nNames; j++)
      {       
          if(name[i].compareToIgnoreCase(name[j])>0)
          {
          String temp = name[i];
          name[i] = name[j];
          name[j] = temp;            
          }  
      }
    }

    for(int i=0; i<name.length;i++)
        System.out.println(name[i]);

  }

}
4

1 回答 1

1

你的代码是:

if(nNames<name.length && check = false)

check= false,分配falsecheck。要checkfalse您比较,可以使用 check==false!check

取决于您要验证的内容。下面的代码将消除编译错误:

check == false //checks if check is false

或者,

if(nNames<name.length && (check = false))
// above is same as if(nNames<name.length && false) // which will always be false
于 2013-05-14T15:46:18.277 回答