2010-11-09 29 views
2

我有下一个代码,它获得一个数字,我需要将该数字拆分成部分,firstPart应该是没有最后一个数字的整数,secondPart应该只是原始号码的最后一位数字。Java:从INT的其余部分拆分最后一位数

public Boolean verificationNumberFiscalId(String fiscalId) { 

     // Trying to do a better wa yto do it 
     Integer firstPart = fiscalId.length()-1; 
     Integer secondPart = ??????????; 



     // My old logic 
     String NitValue = ""; 
     for (Integer i = 0; i < fiscalId.length()-1; i++) { 
      NitValue = fiscalId.substring(i,1); 
     } 

     Integer actualValueLength = fiscalId.length()-1;   
     String digitoVerificador = fiscalId.substring(actualValueLength,1); 
     return this.generateDigitoVerification(NitValue) == digitoVerificador; 
    } 
    /** 
    * @param nit 
    * @return digitoVerificador 
    * @comment: Does the math logic 
    */ 
    public String generateDigitoVerification(String nit) {   
     Integer[] nums = { 3, 7, 13, 17, 19, 23, 29, 37, 41, 43, 47, 53, 59, 67, 71 }; 

     Integer sum = 0; 

     String str = String.valueOf(nit); 
     for (Integer i = str.length() - 1, j=0; i >= 0; i--, j++) { 
      sum += Character.digit(str.charAt(i), 10) * nums[j]; 
     } 

     Integer dv = (sum % 11) > 1 ? (11 - (sum % 11)) : (sum % 11); 
     return dv.toString(); 
    } 

您能否建议我一个更好的方法来做到这一点?谢谢!

回答

10
int x = 1343248724; 
int firstpart = x/10; 
int secondpart = x%10; 

System.out.println(firstpart); 
System.out.println(secondpart); 

MOD(%)给你,这将是最后的数字,如果你国防部10 鸿沟将丢弃最后一位剩余部分。这样你就不必实际搜索字符串。

做所有的东西,长似乎有点矫枉过正一样对我

哦,并让您的PARAM为INT我会用

Interger.decode(fiscalId); 
+0

诚然,这是更优雅(+1) – 2010-11-09 15:34:15

+0

@seanizer:同意(+1) – darioo 2010-11-09 15:35:35

+0

完美的方式来做到这一点!谢谢 :) – BoDiE2003 2010-11-09 17:43:58

2

这是你如何能得到整数:

Integer firstPart = Integer.valueOf(
         fiscalId.substring(0,fiscalId.length()-1)); 
Integer secondPart = Integer.valueOf(
         fiscalId.substring(fiscalId.length()-1)); 

,但我建议,而不是越来越整数:

int firstPart = Integer.parseInt(fiscalId.substring(0,fiscalId.length()-1)); 
int secondPart = Integer.parseInt(fiscalId.substring(fiscalId.length()-1)); 
0
  1. 转换你的电话号码为字符串。使用String.valueOf()
  2. 将该字符串拆分为两个字符串。首先,看看原始字符串的长度。对于长度n,使用它的(0,n-1)的子串作为第一个新字符串。使用第二个字符串的最后一个字符(n)
  3. 使用Integer.valueOf()将两个字符串都转换回整数。
相关问题