Java - 合并两组代码

时间:2016-01-15 10:28:56

标签: java arrays regex list

我写了两段独立的代码。现在我想合并两段代码。现在,一部分打开文本文件并显示文本文件的内容,第二部分代码验证手动输入的邮政编码。现在我想读取一个文本文件,然后自动验证文本文件中的邮政编码。不知道如何合并它们。如果我被困住,请问任何问题。

package postcodesort;

import java.util.*;
import java.util.Random;
import java.util.Queue;
import java.util.TreeSet;
import java.io.File;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedList;
import java.util.StringTokenizer;


public class PostCodeSort 
{
  Queue<String> postcodeStack = new LinkedList<String>();

  public static void main(String[] args) throws IOException 
  {
    FileReader fileReader = null;

    // Create the FileReader object
    try {
      fileReader = new FileReader("postcodes1.txt");
      BufferedReader br = new BufferedReader(fileReader);
      String str;

      while((str = br.readLine()) != null) 
      {
        System.out.println(str + "");
      }
    } 
    catch (IOException ex) 
    {
      // handle exception;
    } 
    finally 
    {
      fileReader.close();
    }

    // Close the input
  }
}

手动验证邮政编码的第二部分:

List<String> zips = new ArrayList<String>();

//Valid ZIP codes
zips.add("SW1W 0NY"); 
zips.add("PO16 7GZ"); 
zips.add("GU16 7HF"); 
zips.add("L1 8JQ"); 

//Invalid ZIP codes
zips.add("Z1A 0B1");
zips.add("A1A 0B11");

String regex = "^[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][ABD-HJLNP-UW-Z]{2}$";

Pattern pattern = Pattern.compile(regex);

for (String zip : zips)
{
  Matcher matcher = pattern.matcher(zip);
  System.out.println(matcher.matches());
}

2 个答案:

答案 0 :(得分:0)

您应该创建一个名为ZipCodeValidator的类,其中包含第二个代码段的功能。它看起来像这样

public class ZipCodeValidator {
    private static String regex = "^[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][ABD-HJLNP-UW-Z]{2}$";
    private static Pattern pattern = Pattern.compile(regex);

    public boolean isValid(String zipCode) {
        Matcher matcher = pattern.matcher(zip);
        return matcher.matches();
    }
}

然后你可以创建这个类的实例

ZipCodeValidator zipCodeValidator = new ZipCodeValidator();

然后在主方法

中使用它
boolean valid = zipCodeValidator.isValid(zipCode);

答案 1 :(得分:0)

通过@hiflyer合并您的问题和答案我发布了这个答案,这假设文件postcodes1.txt将所有邮政编码分开排列。

   package postcodesort;


    import java.util.*;
    import java.util.Random;
    import java.util.Queue;
    import java.util.TreeSet;
    import java.io.File;
    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.LinkedList;
    import java.util.StringTokenizer;


    public class PostCodeSort 
    {
        Queue<String> postcodeStack = new LinkedList<String>();

        public static void main(String[] args) throws IOException 
        {
            FileReader fileReader = null;
            ZipCodeValidator zipCodeValidator = new ZipCodeValidator();

            // Create the FileReader object
            try {
                fileReader = new FileReader("postcodes1.txt");
                BufferedReader br = new BufferedReader(fileReader);

                String str;
                while((str = br.readLine()) != null) 
                {
                    if(zipCodeValidator.isValid(str)){
                        System.out.println(str + " is valid");
                    }
                    else{
                        System.out.println(str + " is not valid");
                    }
                }
            }
            catch (IOException ex) 
            {
                // handle exception;
            }

            finally 
            {
                fileReader.close();
            }

        }
    }

    public class ZipCodeValidator {
        private static String regex = "^[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][ABD-HJLNP-UW-Z]{2}$";
        private static Pattern pattern = Pattern.compile(regex);

        public boolean isValid(String zipCode) {
            Matcher matcher = pattern.matcher(zip);
            return matcher.matches();
        }
    }