- Java code
import java.util.*;public class Test { punlic static void main (String[]args){ int custNO;//客户会员号(说明:customer指客户) //输入会员卡号 System.out.println ("请输入四位会员卡号:"); Scanner input = new Scanner(System.in); custNO = input.nextInt(); //获得每位数字(**我就是这个步骤不明白,希望高手帮忙解答一下,谢谢) int gewei = custNO % 10 ; //分解获得个位数 int shiwei = custNO /10 %10 ; //分解获得十位数 int baiwei = custNO /100 %10 ;//分解获得百位数 int qianwei = custNO /1000 ; //分解获得千位数(*为什么千位数只需要除以1000就可以,而不用 %10呢?) //计算数字之和 int sum = gewei + shiwei + baiwei + qianwei ; System.out.println ("会员卡号"+custNO +"各位之和:" + sum ); }}
这是书上的一个例子。需求是:
商场推出幸运抽奖活动,抽奖规则是,客户的四位会员卡号的各个位上的数字之和大于20,则为幸运客户。
==================================================
我想知道的是:怎么可以比较简单,通俗的去理解分解4位数的每个数字?
------解决方案--------------------
a/b是除
a%b是取余
千位
例如
4444/1000=4
百位
4444/100=44得到是千位和百位的数
当然还要取余
44%10=4
------解决方案--------------------
int gewei = custNO % 10 ; //分解获得个位数
int shiwei = custNO /10 %10 ; //分解获得十位数
int baiwei = custNO /100 %10 ;//分解获得百位数
int qianwei = custNO /1000 ; //分解获得千位数
理解这个, 234/100 这是取整,2是所求,34是余数 而%是取余数,则234%100得34
自己看看书,在写几个小例子,理解了就会了
------解决方案--------------------
变化个角度,可以将其转换为字符串,然后取出每一位。再将各个字符转换为int。
public static void main (String[]args){
String custNO=null;//定义为字符串类型。
int sum=0;
//输入会员卡号
System.out.println ("请输入四位会员卡号:");
Scanner input = new Scanner(System.in);
custNO = input.nextLine();
for (int i = 0; i <custNO.length(); i++) {
sum+=custNO.charAt(i)-48;
}
if (sum>20) {
System.out.println("你是幸运客户!!!!");
System.out.println ("会员卡号"+custNO +"各位之和:" + sum );
}else {
System.out.println("很遗憾!!!");
}
}
------解决方案--------------------
//获得每位数字(**我就是这个步骤不明白,希望高手帮忙解答一下,谢谢)
int gewei = custNO % 10 ; //分解获得个位数
int shiwei = custNO /10 %10 ; //分解获得十位数
int baiwei = custNO /100 %10 ;//分解获得百位数
int qianwei = custNO /1000 ; //分解获得千位数(*为什么千位数只需要除以1000就可以,而不用 %10呢?)
千位%10也没什么意义,因为对于4位数来说,千位的时候就只剩下1位数了,1位数%10还是等于1位数本身
即
0到9 % 10 还是 0到9本身
而分解百位数的时候,因为4位数除以100,还剩下2位数(比如4532/100=45,小数被舍掉),所以必须要%10才能得到2位数的最后1位数,同理,是位数分解也是一样