Я в процессе создания программы, которая может взять # с кредитной карты и проверить, действительно ли она.Почему моя программа выводит результаты дважды подряд?
вот мой код до сих пор:
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 номеров, но затем он как-то перебирает себя, а значения отображаются в 2-й раз (отображение 32 общих #). Любые подсказки?
потому что вы звоните 'doubleDig' дважды? – Mshnik
Что значит? это дублирование, исходящее из 'int [] digits = doubleDig (Ccard, length);', а также 'doubleDig (Ccard, length);'? – Epicfiregamer
Я думаю, что вы сначала пытаетесь выполнить метод doubleDig(), а затем попытаетесь получить массив цифр. Поэтому, когда вы вызываете этот метод два раза, когда выполняется System.out.println, считается, что метод вызван для разных целей. – David