日期:2014-05-20  浏览次数:20654 次

跪求高手解释:取余运算
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位数,同理,是位数分解也是一样