我正在制作一个程序,可以从信用卡中取出#并检查它是否有效。
到目前为止,这是我的代码:
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个#)。有线索吗?
答案 0 :(得分:1)
因为在这行代码nums[x] = cardNum.charAt(x);
中你实际上是打印字符值,即[53,52,57等] 5491946915444920
答案 1 :(得分:1)
你可以用这个:
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;
}