使用布尔值搜索重复

时间:2013-05-14 15:44:06

标签: java boolean duplicates

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

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]);

  }

}

1 个答案:

答案 0 :(得分:1)

您的代码是:

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

check= false,将false分配给check。要将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