2016-10-09 3 views
-2

奇数インデックスですべての桁を取り、合計を形成するプログラムを作成しようとしています。 例:クレジットカード番号が43589795であればは、その後、あなたは合計を形成する3 + 8 + 7 + 5は、その後23ユーザー入力番号から個々の数字を取得し、それが奇数インデックスか偶数インデックスのどちらかであることを確認してください

でもインデックスであり、その結果、すべての数字を追加し桁の倍ごとです数を合計します。 例:数字を倍にする上記の数字は8 10 18です。これらの値にすべての桁を追加すると、8 + 1 + 0 + 1 + 8 + 1 + 8が27になるため、最終合計は23 + 27最終的な合計の最後の桁が0である場合、クレジットカード番号は有効です。私たちの場合、50の最後の数字は0なので、数字は有効です。

私は、私がループについてよく理解し、Character.isDigitを使用しようとしているのを助けてくれて非常に感謝します。ありがとうございました!

import java.util.Scanner; 
public class CreditCard { 
    public static void main(String args[]) { 
     Scanner scan = new Scanner(System.in); 

     final String CREDIT_CARD = "[0-9]{8}"; 
     int length = 8; 
     String num, response; 
     char ch1, ch2; 

     do { 
      do { 
      System.out.println("Please enter a 8 digit credit cardnumber");//validating that the user entered 8 digits. 
      num = scan.next(); 
       ch1 = num.charAt(0); 
      } while (!num.matches(CREDIT_CARD)); 

     for (int i = 0; i < CREDIT_CARD.length(); i++){ //for loop for checking if number is at odd or even index? 
      Character.isDigit(ch1); //Trying to use Character.isDigit to validate whether it is at odd or even index? 
      if (ch1 % 2== 1){ 

      } 
     } 





      System.out.println("Would you like to enter a different card?"); 
      response = scan.next(); 
    }while (response.equals("yes")); //Do while loop asking if user wants to enter another card. 

     System.out.println("Goodbye!"); 


    } 
} 

答えて

-2

解決策を見つけてください。ここでは、まずカード番号にある文字が数字かどうかを確認します。そうでない場合は、ループを破り、印刷が無効になります。数字が有効な場合は、インデックスに基づいて操作を実行しています。位置が奇数の場合、再び数値の合計桁値をカウントします。

  int sum = 0; 
      Boolean isValidCard = true; 
      for (int i = 0; i < num.length(); i++) { 
       ch1 = num.charAt(i); 
       if (Character.isDigit(ch1)) { 
        if (i % 2 == 1) { 
         sum += ((int) ch1 - 48); 
        } else { 
         int temp = (2 * ((int) ch1 - 48)); 
         while (temp > 0) { 
          sum += temp % 10; 
          temp = temp/10; 
         } 
        } 
       } else { 
        isValidCard = false; 
        break; 
       } 
      } 
      if (!isValidCard) { 
       System.out.println("CC Invalid"); 
      } else if (sum % 10 == 0) { 
       System.out.println("CC is valid"); 
      } 
+0

あなたは本当に未熟ですか?理由を提示せずにダウン投票する?? – cody123

関連する問題