簡體   English   中英

為什么我的程序連續兩次輸出結果?

[英]Why is my program outputing the results twice in a row?

我正在開發一個程序,該程序可以從信用卡中獲取#號,並檢查其是否有效。

到目前為止,這是我的代碼:

import java.util.Scanner;

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner reader=new Scanner(System.in);
        System.out.println("Please enter your credit card #");
        String Ccard=reader.nextLine();
        int length=Ccard.length();
        doubleDig(Ccard,length);
        int []digits=doubleDig(Ccard,length);
        /*for(int x=0;x<digits.length;x++){
        System.out.println(digits[x]);
        }test array*/

    }
    public static int[] doubleDig(String cardNum,int length){
        int []nums=new int[length];
        for(int x=0;x<cardNum.length();x++){
            nums[x]=cardNum.charAt(x);
            System.out.println(cardNum.charAt(x));
        }//makes array
        //System.out.println(nums.length);
        for(int x=nums.length;x<0;x-=2){
            nums[x]=nums[x]*2;
        }
        return nums;

    }//end doubleDig
}

我去看看數組是否設置正確,所以我使用了: System.out.println(nums[x]); 在循環中,但是得到了我不理解的值。 然后,我去使用了: System.out.println(cardNum.charAt(x)); 在循環中查看發生了什么。 然后,我注意到該數組以某種方式被第二次顯示。 數組的大小應等於用戶輸入的字符串的長度(我使用5491946915444920作為測試值),在這種情況下為16。 顯示16個數字,但隨后又以某種方式循環其自身,並且值顯示第二次(顯示總共32個#)。 有什么線索嗎?

因為在這行代碼nums[x] = cardNum.charAt(x); 您實際上是在打印char值,即5491946915444920的[53、52、57等]

您可以使用此:

public static int[] doubleDig(String cardNum, int length) {
    int[] nums = new int[length];
    int num;
    for (int x = 0; x < cardNum.length(); x++) {
        nums[x]=Integer.parseInt(cardNum.substring(x, x+1));
    }
    System.out.println(nums.length);
    return nums;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM