Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JFileChooser,允许用户选择信用卡号的输入文件_Java_Loops_Methods_Jfilechooser - Fatal编程技术网

Java JFileChooser,允许用户选择信用卡号的输入文件

Java JFileChooser,允许用户选择信用卡号的输入文件,java,loops,methods,jfilechooser,Java,Loops,Methods,Jfilechooser,在这里,我使用了用户输入测试信用卡号,但现在我想使用JFileChooser来完成这项工作,以允许用户选择信用卡号的输入文件并在输出文件中显示结果。我得到的带有卡号的As输出文件是否有效,但如果我想打印带有公司名称的卡号,我该怎么做 这是我的密码: public static void main(String[] args) throws FileNotFoundException { // TODO Auto-generated method stub Scan

在这里,我使用了用户输入测试信用卡号,但现在我想使用JFileChooser来完成这项工作,以允许用户选择信用卡号的输入文件并在输出文件中显示结果。我得到的带有卡号的As输出文件是否有效,但如果我想打印带有公司名称的卡号,我该怎么做

这是我的密码:

public static void main(String[] args) throws FileNotFoundException {
        // TODO Auto-generated method stub
        Scanner user = new Scanner(System.in);

        JFileChooser jfc = new JFileChooser(".");
        int jfcUserOption = jfc.showOpenDialog(null);
        if (jfcUserOption == JFileChooser.APPROVE_OPTION){
            File chosenFile = jfc.getSelectedFile();   
            Scanner scan = new Scanner( chosenFile ); 
            System.out.print("Output File Name: ");
            String outputFileName = user.nextLine();
            PrintWriter output = new PrintWriter( outputFileName );  


                while(scan.hasNextLine()){
                long number = scan.nextLong();
                while(number != 0){
                    if(isValid(number)){
                        output.println(number + " is valid number");
                        }
                    else{
                        output.println(number + " is invalid number");
                    }


                    output.close();

                }
                }
        }
        }

    public static boolean isValid(long number) {
        // TODO Auto-generated method stub
          int total = sumOfEvenPlace(number) + sumOfoddPlace(number);

            if ((total % 10 == 0) && (preMatched(number, 1) == true)) {
                return true;
            } else {
                return false;
            }
    }

    private static int sumOfoddPlace(long number) {
        // TODO Auto-generated method stub
        int n = getSize(number);
        int sum = 0;
        for(int i = 1; i <= n; i += 2){
            sum += getDigitIndex(number, i);
        }
        return sum;
    }

    private static int sumOfEvenPlace(long number) {
        // TODO Auto-generated method stub
        int sum = 0;
        int n = getSize(number);
        for (int i = 2; i <= n; i+= 2){
            sum += getDigit(2 * getDigitIndex(number, i));
        }

        return sum;
    }

    private static int getDigit(int number) {
        // TODO Auto-generated method stub
        int digit1 = number / 10;
        int digit2 = number % 10;

        if(digit1 == 0){
            return number;
        }
        else{
            return digit1 + digit2;
        }

    }

    private static int getDigitIndex(long number, int index) {
        // TODO Auto-generated method stub
        int digit;
        digit = (int)(((number / Math.pow(10, index - 1))) % 10);
        return digit;
    }

    private static int getSize(long digit) {
        // TODO Auto-generated method stub
        int digitNumber = 1;
        while((digit = digit / 10) != 0){
            digitNumber++;
        }
        return digitNumber;
    }

    private static int getPre(long number, int p) {
        // TODO Auto-generated method stub
        int digitnumber = getSize(number);
        return (int) (number / (long) ( Math.pow(10.0, (double)(digitnumber - p))));
    }

    private static boolean preMatched(long number, int digit){

        if ((getPre(number, digit) == 3) /*|| (getPre(number, digit) == 37) */ || (getPre(number, digit) == 4) || (getPre(number, digit) == 5) || (getPre(number, digit) == 6)) {

            //PrintWriter pw = null;
            if (getPre(number, digit) == 3 /* && getPre(number, digit) == 37 */ ) {
                //output.println( " American Express Card");
            } else if (getPre(number, digit) == 4) {
                //pw.println(" Visa Card ");
            } else if (getPre(number, digit) == 5) {
               //pw.println("Master Card");
            } else if (getPre(number, digit) == 6) {
                //pw.println("Discover Card");
            }

            return true;

        } else {
            return false;

        }
    }



    }
我的输出应该是:testOutput.txt

5535085286738004    Master Card         Valid               
5443144794186700    Master Card         Valid               
6011436897231072    Discover Card       Valid               
011600388914427     None                Invalid    
然后使用BufferedReader遍历所有行,并为每一行调用方法

BufferedReader reader = null;

    try {
        reader = new BufferedReader(new FileReader(file));
        String line;
            while ((line = reader.readLine()) != null) {
                if (!line.isEmpty()) {
                        long accNumber=Long.parseLong(line);
                        //do your stuff     
                    }
                }
        }
JFileChooser fc = new JFileChooser(f);
    fc.showOpenDialog(this);
    if (fc.getSelectedFile() != null) {
        return fc.getSelectedFile().getAbsolutePath();
    } else {
        return "No file selected";
    }
BufferedReader reader = null;

    try {
        reader = new BufferedReader(new FileReader(file));
        String line;
            while ((line = reader.readLine()) != null) {
                if (!line.isEmpty()) {
                        long accNumber=Long.parseLong(line);
                        //do your stuff     
                    }
                }
        }