正则表达式浮点数输入文本文件

时间:2015-11-21 05:12:33

标签: java regex joptionpane

我需要做一份工资单报告。您必须键入包含文本信息的文件。程序检查文件是否存在。然后你创建程序的输出文件。程序在文本文件中打印工作人员的姓名,小时和费率。我程序只运行最后一组数字。

 import java.text.NumberFormat;
 import javax.swing.JTextArea;
 import java.awt.Font;
 import javax.swing.JOptionPane;
 import java.util.Scanner;
 import java.io.*;

 public class Homework {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws IOException {

    String answer, filename;


    filename = JOptionPane.showInputDialog("Enter the Input File Path:");

    File input = new File(filename);
    if (!input.exists()) {
        JOptionPane.showMessageDialog(null, "The input file:\n" + filename + "\ndoes not exist!");
        System.exit(0);
    }
    filename = JOptionPane.showInputDialog("Enter the Output File Path:");

    File output = new File(filename);
    if (output.exists()) {
        answer = JOptionPane.showInputDialog("The output file alaready exist!\nDo you want to overwrite it?");
        if (!answer.toLowerCase().equals("yes")) {
            System.exit(0);
        }
    }






    PrintWriter outFile = new PrintWriter(filename);
    Scanner in = new Scanner(input);

    double numberWords = 0, countNumber = 0;


   double value;

    String num, words, message;
    String amtStr, line = "";

    String alphaRegex = ".*[A-Za-z].*";
    String numRegex = ".*[0-9].*";



    while (in.hasNext()) {
        words = in.next();

        if (words.matches(alphaRegex)) {

            numberWords++;
            message = "The name is "+words+"\n"; //The Line is but leave +line+

     JOptionPane.showMessageDialog (null, message);



        } else if (words.matches(numRegex)) {
            countNumber++;
           num = in.next();


           message = "The number is "+num+"\n"; //The Line is but leave +line+

     JOptionPane.showMessageDialog (null, message);

             }



}
}

}

2 个答案:

答案 0 :(得分:2)

导致问题的不是你的正则表达式。这是while循环中的if语句。当单词匹配numRegex时,比你将in.next()指定为num,导致扫描程序跳过当前单词并选择下一个单词,那么在你的情况下恰好也是一个数字。

用这个替换while循环,它将起作用(我已经测试了代码):

$('#gallery img').each(function(){
    $(this).on('click', function(){
        var newIMG = $(this).clone();
        $('#bigIMG').html(newIMG);
    });
});

答案 1 :(得分:0)

我假设您正在寻找正则表达式来识别文本中的浮点数。如果是这样的话,请点击这里:

"(\\.\\d+)|(\\d+(\\.\\d+)?)"

这匹配任何单个小数后跟一个或多个数字或任何数字序列,后跟可选的小数,后跟一个或多个数字。请注意,如果这是一个问题,这不会解决前导零。

本网站是构建和测试正则表达式的绝佳资源:

http://www.regexr.com/