JAVA基础第二组(5道题)

6.【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
       1.程序分析:利用辗除法。

package com.niit.homework1;

import java.util.Scanner;

/**
 * @author: Annie
 * @date:2016年5月20日
 * @description:[程序6]输入两个正整数m和n,求其最大公约数和最小公倍数。 
 */
public class CommonFactor {

    /**
     * @param numMin最小公倍数
     * @param numMax最大公因数
     */
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        String ans = null;
        do{
            
            System.out.println("请输入两个数:number1,number2(number1>=number2)");
            int number1 = reader.nextInt();
            int number2 =reader.nextInt();
            if(number1 < number2){
                System.out.println("输入的顺序错误,是否重新输入:(y/n)");
                ans = reader.next();
            }else{
                int numMax = printCommon(number1,number2);    
                int numMin = number1*number2/numMax;
                System.out.println("最大公因数是:"+numMax+"
最小公倍数是:"+numMin);
                return;
            }
        }while("y".equals(ans));

    }

    /**
     * @param number1 除数
     * @param number2 被除数(之后有作为被除数)
     * @param number3作为余数
     * @param number4作为商(之后作为除数)
     */
    public static int printCommon(int number1, int number2) {
        int number3,number4;
        do{
         number3  = number1%number2;
         number4 = number1/number2;
            number1 = number2;
            number2 = number4;    
            
        }while(number3!=0);
        return number4;
    }
    
    

}

7.【程序7】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
       1.程序分析:利用while语句,条件为输入的字符不为' '.

package com.niit.homework1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * @author: Annie
 * @date:2016年5月23日
 * @description:【程序7】 
                题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。     
 */
public class CalculateNum {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("请输入一行文本:");
        String str = br.readLine();
        int countNum = 0;//统计数字的个数
        int countChar = 0;//统计英文字母的个数
        int countSpace = 0;//统计空格的个数
        int countOthers = 0;//统计其它字符的个数
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);//返回i索引下的字符
            if (c >= '0' && (int) c <= '9') {
                countNum++;
            } else if ((c >= 'a' && c <= 'z')||(c >= 'A' && c <= 'Z')) {
                countChar++;
            } else if (c == ' ') {
                countSpace++;
            } else{
                countOthers++;
            }
        }
        System.out.println("数字个数:"+countNum);
        System.out.println("英文字母个数:"+countChar);
        System.out.println("空格个数:"+countSpace);
        System.out.println("其他字符个数:"+countOthers);
    }
}

8.【程序8】
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),
       几个数相加有键盘控制。
       1.程序分析:关键是计算出每一项的值。

package com.niit.homework1;

import java.util.Scanner;

/**
 * @author: Annie
 * @date:2016年5月20日
 * @description:【程序8】求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),
 *              几个数相加有键盘控制。 
                
 */
public class Sum {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        System.out.println("请输入要先加的数和相加的次数(number1,number2)");
         int number1 = reader.nextInt();
         int number2 = reader.nextInt();
         Sum s = new Sum();
        System.out.println(s.printSum(number1,number2)); 
    }

    /**
     * @param number1代表相加的数
     * @param number2代表先加的个数
     */
    private int printSum(int number1, int number2) {
        int[] arr = new int [number2];
        int sum =0;
        if(number2 ==1 ){
            return sum = number1;
        }else{
            for (int i = 1; i < number2; i++) {
                arr[0]=number1;
                arr[i]=arr[i-1]*10+arr[0];
                System.out.println(arr[i]);
                sum +=arr[i];
                
            }
            return sum+number1;
        }
    }

}

9.【程序9】
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完
        数。

10.题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多
             少米?第10次反弹多高?

package com.niit.homework1;

/**
 * @author: Annie
 * @date:2016年5月20日
 * @description:【10】.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多
                                              少米?第10次反弹多高? 

 */
public class FallBall {
    public static void main(String[] args) {
         FallBall fb = new FallBall();
         fb.printcount(100);

    }

    /**
     * @param i代表100米高空
     * @param count代表每次反弹后的高度是原来的一半
     * @param sum 代表总体经过的路程
     */
    private void printcount(double i) {
        double count=i,sum = 0;
        for (int j = 0; j <10; j++) {
            count = count/2;
            sum = sum +count;
        }
        sum = sum +i;
        System.out.println("球经过10次的反弹后,共经过了"+sum+"米的路程
"+"第十次反弹的高度是:"+count);
    }

}
原文地址:https://www.cnblogs.com/wangmingxia/p/5520716.html