java基础算法题,四个实例分享

上次已经为大家介绍过java基础算法题,兔子问题和水仙花束,今天我们继续来了解下java基础算法题的内容,会通过四个实例为大家展示。

一、Test1.java GcdTest.java,后者是辗转相除法

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

先进行分析:利用辗除法。代码展示如下所示:

package cn.edu.hit;
import java.util.Scanner;
/**
 * 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
 *  1.程序分析:利用辗除法。
 * @author tonylp
 */
public class comonDivisor
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int first = a;
        int second = b;
        System.out.println("a=" + a + ";b=" + b);
        int temp;
        if (a < b)
        {
            temp = a;
            a = b;
            b = temp;
        }
        while (b != 0)
        {
            temp = a % b;
            a = b;
            b = temp;
        }
        System.out.println("最大公约数为" + a);
        System.out.println("最小公倍数为" + first * second / a);
    }
}

二、StChar.java

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

先进行分析:利用while语句,条件为输入的字符不为'\n'。代码展示如下所示:

package cn.edu.hit;
import java.util.Scanner;
/**
 * 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 1.程序分析:利用while语句,条件为输入的字符不为'\n'.
 * 
 * @author tonylp
 */
public class strIdentify
{
    public static void main(String[] args)
    {
        int abcCount = 0;
        int spaceCount = 0;
        int numCount = 0;
        int otherCount = 0;
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        char[] ch = str.toCharArray();
        for (int i = 0; i < ch.length; i++)
        {
            if (Character.isDigit(ch[i]))
            {
                numCount++;
            }
            else if (Character.isSpaceChar(ch[i]))
            {
                spaceCount++;
            }
            else if (Character.isLetter(ch[i]))
            {
                abcCount++;
            }
            else
            {
                otherCount++;
            }
        }
        System.out.println("字母个数" + abcCount);
        System.out.println("数字个数" + numCount);
        System.out.println("空格个数" + spaceCount);
        System.out.println("其他字符个数" + otherCount);
    }
}

三、TestAdd.java

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。比如说,2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

进行分析:重点是计算出每一项的值。代码展示如下所示:

package cn.edu.hit;
import java.util.Scanner;
/**
 * 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),
 * 几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。
 * 
 * @author tonylp
 */
public class numAdd
{
    public static void main(String[] args)
    {
        System.out.println("请输入数字0-9:");
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        System.out.println("请输入数字重复次数:");
        int b = sc.nextInt();
        int s = 0;
        System.out.println("a=" + a + ";b=" + b);
        for (int i = b; i > 0; i--)
        {
            s += i * a * Math.pow(10, (b - i));
        }
        System.out.println("s=" + s);
    }
}

四、WanShu.java

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。比如说,6=1+2+3.编程找出1000以内的所有完数。代码如下所示:

package cn.edu.hit;
/**
 * 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如6=1+2+3.编程 找出1000以内的所有完数。
 * 
 * @author tonylp
 */
public class wanShu
{
    public static void main(String[] args)
    {
        int k = 2;
        int num = 0;
        int temp = 1;
        int j = 0;
        for (num = 1; num <= 1000; num++)
        {
            k = 2;
            temp = 1;
            j = num;
            while (j >= k)
            {
                if (j % k == 0)
                {
                    temp += k;
                    j = j / k;
                }
                else
                {
                    k++;
                }
            }
            if (temp == num)
            {
                System.out.println(temp);
            }
        }
    }
}

以上 就是关于 java基础算法题,四个实例分享的主要内容。如果你对java知识感兴趣,想要了解更多java基础,敬请关注奇Q工具网。

推荐阅读:

java学习书籍推荐,基础篇

java基础知识,类的构成与循环语句

javaweb发送邮件的方式有哪几种?邮件发送基础是什么?