【问题标题】:Java - Merging two sets of codeJava - 合并两组代码
【发布时间】:2016-01-15 10:28:55
【问题描述】:

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

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());
}

【问题讨论】:

  • 尝试更具体地提出问题并解释您所面临问题的背景,以便其他人可以解决您的问题。
  • 我还在你的 sn-p 中发现了很多不必要的代码。比如String inputFileName = "postcodes1.txt";如果直接给文件名上面的语句有什么用?
  • 文件中有什么?它有你在第二个 sn-p 中的邮政编码吗?
  • 没有足够的信息来回答您的问题。这 2 段代码是在 2 个单独的类中还是只有 1 个?它们在同一个包中吗?
  • 合并不应该是你的目标,将第二个 sn-p 提取到一个 ZipCodeValidator 类中。

标签: java arrays regex list


【解决方案1】:

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

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

然后在你的 main 方法中使用它

boolean valid = zipCodeValidator.isValid(zipCode);

【讨论】:

    【解决方案2】:

    合并您的问题和@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();
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-03
      • 2013-12-16
      • 2015-01-14
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      相关资源
      最近更新 更多