java语言程序设计第十版(Introduce to java 10th) 课后习题 chapter6-31
自己纯手工,欢迎讨论
package chapter6;
import java.util.Scanner;
public class T31 {
public static void main(String[] args) {
System.out.println("Enter a credit card number as a long integer:");
Scanner in = new Scanner(System.in);
String card = in.nextLine();
int[] num = new int[card.length()];
for(int i=0;i<card.length();i++){
//以下java API,值得记忆学习
// num[i]=Integer.parseInt(String.valueOf(card.charAt(i)));
//以下自己的方法把char转化成int后减去相应的数,比如char的1对应的int是49,用49-48即可,
num[i]=(int)card.charAt(i)-48;
}
// 测试
// for(int e:num){
// System.out.print(e);
// }
int sum1=sumOfDouble(num);
// 测试
// System.out.println(sum1);
int sum2=sumOfOdd(num);
// 测试
// System.out.println(sum2);
if((sum1+sum2)%10==0){
System.out.println(card+" is valid.");
}
else
System.out.println(card+" is invalid.");
}
//算双位数的和
public static int sumOfDouble(int[] a){
int sum=0;
for(int i=a.length-2;i>=0;i-=2){
if(2*a[i]>9){
sum=sum+(2*a[i]%10)+(2*a[i]/10);
}
else{
sum=sum+2*a[i];
}
}
return sum;
}
//算奇位数的和
public static int sumOfOdd(int[]a){
int sum = 0;
for(int i =a.length-1;i>=0;i-=2){
sum+=a[i];
}
return sum;
}
}