用java代码实现查找1的个数
- import javax.swing.*;
- public class phenixHasOne{
- public static void main(String[]args){
- String strNumber=JOptionPane.showInputDialog("please input the number ");
- //int number=Integer.parseInt(strNumber);
- int oneNumbers=0;
- for(int i=strNumber.length()-1,j=0;i>=0;i--,j++)
- {
- String strbefore=strNumber.substring(0,i);
- String strlast=strNumber.substring(i+1,strNumber.length());
- String strcurrentNumber=strNumber.substring(i,i+1);
- //只有一位的时候
- if(strbefore.equals("")&&strlast.equals("")){
- oneNumbers+=OneNumbers(0,0,Integer.parseInt(strcurrentNumber),(int)Math.pow(10.0,(double)j));
- break;
- }
- //当是第一次=的时候
- if(i==strNumber.length()-1)
- {
- strlast="";
- System.out.println("前边数字:"+strbefore);
- System.out.println("后边数字"+strlast);
- System.out.println("当前数字"+strcurrentNumber);
- oneNumbers+=OneNumbers(Integer.parseInt(strbefore),0,Integer.parseInt(strcurrentNumber),(int)Math.pow(10.0,(double)j));
- continue;
- }
- //最后一次的时候
- if(i==0)
- {
- strbefore="";
- System.out.println("前边数字:"+strbefore);
- System.out.println("后边数字"+strlast);
- System.out.println("当前数字"+strcurrentNumber);
- oneNumbers+=OneNumbers(0,Integer.parseInt(strlast),Integer.parseInt(strcurrentNumber),(int)Math.pow(10.0,(double)j));
- continue;
- }
- System.out.println("前边数字:"+strbefore);
- System.out.println("后边数字"+strlast);
- System.out.println("当前数字"+strcurrentNumber);
- oneNumbers+=OneNumbers(Integer.parseInt(strbefore),Integer.parseInt(strlast),Integer.parseInt(strcurrentNumber),(int)Math.pow(10.0,(double)j));
- System.out.println(".......................................");
- }
- System.out.println("total numbers of one is "+oneNumbers);
- }
- public static int OneNumbers(int before,int last,int currentNumber,int metric){
- int number=0;
- if(currentNumber>1)
- {
- number=(before+1)*metric;
- }
- if(currentNumber==1)
- {
- //说明是个位
- if(metric==1){
- number=before+1;
- }
- else{
- number=(before)*metric+(last+1);
- }
- }
- if(currentNumber==0)
- {
- number=before*metric;
- }
- return number;
- }
- }