1.输入一个整数,这个数小于十位数,在输出中显示这个数的位数。
2.求1000以内不能被7整除的数的和。

解决方案 »

  1.   

    第一个题用SWITCH判断下 
    switch (输入的数n)
    {
    case n/100000000>0 : Sysem.out.println(n);berek;
    下面依次判断
    }
      

  2.   

    第一个题用SWITCH判断下 
    switch (输入的数n)
    {
    case n/100000000>0 : Sysem.out.println(n);berek;
    下面依次判断
    }
      

  3.   


    public class Test { //求1到i的和
    public static int qiuHe(int i){
    int sum = 0;
    for(int j = 1;j <= i; j++){
    sum += j;
    }
    return sum;
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub

    int num = 1000;
    int k = 7;
    int jieguo = qiuHe(num)-7*qiuHe(num/k);
    System.out.println(jieguo);
    }}
      

  4.   

    1》把整数转化为String求length.
    2》三楼写的就很好.
      

  5.   

    第一个,把他转化为字符串,求长度。(""+intNO).length
    第二个,public add(){
    int sum=0;
    for(int i=0;i<1000;i++){
    if(0!=i%7)
    sum+=i;
    }
    return sum;
    }
      

  6.   

    zhe nian tou ,cheng xu yuan zen me dou lan cheng zhe yang zi le ? xiao cheng xu zi ji qiao qiao jiu chu lai le ,ke tang zuo ye ba ?
      

  7.   

    public class Test6 {
        
        public static void main(String[] args) {
            System.out.println(sum(1000));
            System.out.println(len(1234));
        }
        
        public static int len(int num) {
            if(num < 0) {
                throw new IllegalArgumentException("num must be positive number.");
            }
            int len = 1;
            while(num > 10) {
                len++;
                num /= 10;
            }
            return len;
        }
        
        public static int sum(int num) {
            if(num < 0) {
                throw new IllegalArgumentException("num must be positive number.");
            }
            int s = (num * (num + 1)) / 2;
            int a = 0;
            while(a <= num) {
                s -= a;
                a += 7;
            }
            return s;
        }
    }
      

  8.   

    Scanner input=new Scanner(System.in);
    int a=input.nextInt();
    String b=a+"";
    b=b.trim();
    System.out.println(b.length());
      

  9.   


    public int sum(int num){
      if (num==1)
        return 1;
      else if (num%2==0)
        return (1+num)*num/2;
      else
        return (1+num)*num/2+(1+num)/2;
    }public int getResult(int maxNum){
      return sum(maxNum)-sum(maxNum/7)*7;
    }
      

  10.   

    受到启发:public static int sum(int num) { 
            if(num < 0) { 
                throw new IllegalArgumentException("num must be positive number."); 
            } 
            int s = (num * (num + 1)) / 2; 
            int last = num-num%7; 
            s=s-(7+last)*(num/7)/2;        return s; 
        } 
      

  11.   

    class biji
    {
    public static void main(String [] args)
    {
    int n = 1100;
    int m =100000000;
    for(int i=9;i>0;i--)
    {
    if(n/m<=0)
     m/=10;
    else
    {
     System.out.println("位数为:"+i);
     break;
    }
     
    }
    }
    }
      

  12.   

       public static int sum(int num) { 
            if(num < 0) { 
                throw new IllegalArgumentException("num must be positive number."); 
            } 
            int s = (num * (num + 1)) / 2; 
            int a = 0; 
            while(a <= num) { 
                s -= a; 
                a += 7; 
            } 
            return s; 
        } 
    } 学习了,好方法!
      

  13.   

    觉得3楼和5楼第二个问题的程序可读性不错,可以说下7楼解决方案的优点吗?
    我看时间复杂度都是一样的。
    int s = (num * (num + 1)) / 2;  //这个比3楼和5楼容易溢出
      

  14.   


    优点是用公式直接算出了1~num的自然数之和,效率上自然高一些。
    如你所说,大数有可能溢出,但用循环做也有可能溢出,50步和100的关系。实际上7,14,21 .....也可以用等比数列求和公式得出,如我在11楼的回复。
      

  15.   

    顶大虫子11楼的算法,这样算最有效率
    稍微改一下
    int s = Math.round(num/ 2 * (num + 1)) ;
    这样适用的范围就和使用循环一样了
      

  16.   

    import java.util.Scanner;
    class  PanDuan
    {
    public static void main(String[] args) 
    {
    Scanner scanner=new Scanner(System.in);
    System.out.println("请输入一个10位以内的整数:");
    String a=scanner.next();
    System.out.println("这个数的位数是:"+a.length());
    }
    }
      

  17.   


    第二题
    class QiuHe 
    {
    public static void main(String[] args) 
    {
    int k=0;
    for (int i=0;i<1000 ;i++)
    if (i%7!=0)
    k+=i;
    System.out.println(k);
    }
    }