Java程序设计简单练习题

整理了一下最近做的Java练习题,编程新手请多指教
1、编写一个实现由1到k的平方和计算

package demo1.code1;
import java.util.Scanner;
public class Calculate_k {
    public static int calculation(int k) {
        int result = 0;
        for (int i = 1; i <= k; i++) {
            result = i * i + result;
        }
        return result;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int result;
        int num;
        System.out.print("输入一个整数:");
        num = sc.nextInt();
        result = calculation(5);
        System.out.println(result);
    }
}

2.用Java描述一个三角形,提供计算三角形面积方法。三角形的三个边长从键盘输入。

package demo1.code1;
import java.util.Scanner;
public class Triangle {
    private double a, b, c;  //三角形的三条边的边长
    public Triangle(double aa, double bb, double cc) {
        a = aa;
        b = bb;
        c = cc;
    }//构造函数
    public double getArea() {
        double p;
        double s;
        p = (a + b + c) / 2;
        s = p * (p - a) * (p - b) * (p - c);
        s = Math.sqrt(s);
        return s;
    }//计算三角形面积
    public static void main(String[] args) {
        double a, b, c;
        double s;
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入三角形的三条边:");
        a = sc.nextInt();
        b = sc.nextInt();
        c = sc.nextInt();
        Triangle tri = new Triangle(a, b, c);
        s = tri.getArea();
        System.out.println(s);
    }
}

3.假如今天是星期二,100天后将是星期几?

package demo1.code1;
public class CountDate {
    public static void main(String[] args) {
        int days = 100;
        int d;
        d = days % 7;
        System.out.println("假设今天是星期二");
        switch (d) {
            case 0:
                System.out.println("今天的100天后是星期二");
                break;
            case 1:
                System.out.println("今天的100天后是星期三");
                break;
            case 2:
                System.out.println("今天的100天后是星期四");
                break;
            case 3:
                System.out.println("今天的100天后是星期五");
                break;
            case 4:
                System.out.println("今天的100天后是星期六");
                break;
            case 5:
                System.out.println("今天的100天后是星期日");
                break;
            case 6:
                System.out.println("今天的100天后是星期一");
                break;
        }
    }
}

4.人民币的面值有100元,50元,20元,10元,5元,1元,5角,1角,5分,1分。编写程序实现从键盘输入1万元以内的任意数,然后分解成不同数量的,不同面值的人民币?

package demo1.code1;
import java.util.Scanner;
public class RMBDivision {
    public static void main(String[] args) {
        double rmb;
        int rmb_left;
        int rmb_fj;
        int hundred = 10000;
        int fif = 5000;
        int ten = 1000;
        int fiv = 500;
        int one = 100;
        double fivej = 50;
        double onej = 10;
        double fivef = 5;
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入人民币数值(单位:元):");
        rmb = sc.nextDouble();
        rmb_left = (int) rmb;
        rmb = rmb - rmb_left;
        rmb_left = rmb_left * 100;    //将用户输入的人民币单位从元化作分
        rmb = rmb * 100;
        rmb_fj = (int) rmb;
        hundred = rmb_left / hundred;
        rmb_left = rmb_left - hundred * 10000;
        fif = rmb_left / fif;
        rmb_left = rmb_left - fif * 5000;
        ten = rmb_left / ten;
        rmb_left = rmb_left - ten * 1000;
        fiv = rmb_left / fiv;
        rmb_left = rmb_left - fiv * 500;
        one = rmb_left / one;
        rmb_left = rmb_left - one * 100;
        fivej = rmb_fj / (int) fivej;
        rmb_fj = rmb_fj - (int) fivej * 50;
        onej = rmb_fj / (int) onej;
        rmb_fj = rmb_fj - (int) onej * 10;
        fivef = rmb_fj / (int) fivef;
        rmb_fj = rmb_fj - (int) fivef * 5;
        System.out.println("该数值的人民币可分解为" + hundred + "张一百元," + fif + "张五十元," + ten + "张十元," + fiv + "张五元," +
                one + "张一元," + (int) fivej + "张五角," + (int) onej + "张一角," + (int) fivef + "张五分," + rmb_fj + "张一分纸币。");
    }

}
5.编写程序,提示输入两点(x1,y1)和(x2,y2),然后计算两点之间的距离。

package demo1.code1;
import java.util.Scanner;
public class DistanceOfTwoPoints {
    public static double distance(double a, double b, double c, double d) {
        double distance;
        distance = Math.sqrt((a - c) * (a - c) + (b - d) * (b - d));
        return distance;
    }
    public static void main(String[] args) {
        double a, b, c, d;
        double dist;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个点的横坐标与纵坐标(空格键隔开):");
        a = sc.nextDouble();
        b = sc.nextDouble();
        System.out.println("请输入第二个点的横坐标与纵坐标(空格键隔开):");
        c = sc.nextDouble();
        d = sc.nextDouble();
        dist = distance(a, b, c, d);
        System.out.print("两点之间的距离为:" + dist);
    }
}

6.已知三角形的底边和高尺寸分别是56厘米、120厘米,计算该三角形的面积?

package demo1.code1;
public class Triangle02 {
    private double bottom, height;  //三角形的底边和高
    public Triangle02(double b, double h) {
        bottom = b;
        height = h;
    }//构造函数
    public double getArea() {
        double s;
        s = bottom * height / 2;
        return s;
    }
    public static void main(String[] args) {
        double result;
        Triangle02 tri = new Triangle02(56, 120);
        result = tri.getArea();
        System.out.println("三角形的面积为" + result + "平方厘米。");
    }
}

7.从键盘输入三个整数,分别计算它们的平均值、累加和、最大值和最小值。

package demo1.code1;
import java.util.Scanner;
public class ThreeNumCalculation {
    public static int Sum(int a, int b, int c) {
        int result;
        result = a + b + c;
        return result;
    }
    public static int Average(int a, int b, int c) {
        int result;
        result = (a + b + c) / 3;
        return result;
    }
    public static int Max(int a, int b, int c) {
        int max;
        if (a > b) {
            max = a;
        } else {
            max = b;
        }
        if (max > c) {
            return max;
        } else {
            return c;
        }
    }
    public static int Min(int a, int b, int c) {
        int min;
        if (a < b) {
            min = a;
        } else {
            min = b;
        }
        if (min < c) {
            return min;
        } else {
            return c;
        }
    }
    public static void main(String[] args) {
        int a, b, c;
        int result;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入三个整数:");
        a = sc.nextInt();
        b = sc.nextInt();
        c = sc.nextInt();
        result = Average(a, b, c);
        System.out.println("三个数的平均值为:" + result);
        result = Sum(a, b, c);
        System.out.println("三个数的累加和为:" + result);
        result = Max(a, b, c);
        System.out.println("三个数中的最大值为:" + result);
        result = Min(a, b, c);
        System.out.println("三个数中的最小值为:" + result);
    }
}

8.已知圆的半径为R,从键盘输入R的值,分别计算圆的面积和周长。

package demo1.code1;
import java.util.Scanner;
public class Circle {
    private double radius;
    public Circle(double R) {
        radius = R;
    }
    public double getCircumference() {
        return 2 * 3.14 * radius;
    }
    public double getArea() {
        return 3.14 * radius * radius;
    }
    public static void main(String[] args) {
        double result;
        double R;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入圆半径大小:");
        R = sc.nextDouble();
        Circle cir = new Circle(R);
        result = cir.getArea();
        System.out.println("圆的面积为:" + result);
        result = cir.getCircumference();
        System.out.println("圆的周长为:" + result);
    }
}

9.编写程序生成15个随机(int类型)整数?

package demo1.code1;
import java.util.Random;
public class FifteenRandomInt {
    public static void main(String[] args) {
        int num;
        Random ran = new Random();
        for (int i = 0; i < 15; i++) {
            num = ran.nextInt(100);
            System.out.print(num + " ");
        }
    }
}

10.有一三角形的三个顶点A(x,y)、B(x,y)和C(x,y),编写程序从键盘输入三个顶点的坐标,然后计算这个三角形的三个边长和面积?

package demo1.code1;
import java.util.Scanner;
public class Triangle03 {
    private double fir_x, fir_y;
   private double sec_x, sec_y;
   private double thi_x, thi_y;
   public Triangle03(double fx, double fy, double sx, double sy, double tx, double ty) {
        fir_x = fx;
        fir_y = fy;
        sec_x = sx;
        sec_y = sy;
        thi_x = tx;
        thi_y = ty;
    }
    public static double distance(double a, double b, double c, double d) {
        double distance;
        distance = Math.sqrt((a - c) * (a - c) + (b - d) * (b - d));
        return distance;
    }
    public double getPerimeter() {
        double dist1 = distance(fir_x, fir_y, sec_x, sec_y);
        double dist2 = distance(fir_x, fir_y, thi_x, thi_y);
        double dist3 = distance(sec_x, sec_y, thi_x, thi_y);
        return dist1 + dist2 + dist3;
    }
    public double getArea() {
        double p;
        double s;
        double dist1 = distance(fir_x, fir_y, sec_x, sec_y);
        double dist2 = distance(fir_x, fir_y, thi_x, thi_y);
        double dist3 = distance(sec_x, sec_y, thi_x, thi_y);
        p = (dist1 + dist2 + dist3) / 2;
        s = p * (p - dist1) * (p - dist2) * (p - dist3);
        s = Math.sqrt(s);
        return s;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double a, b, c, d, e, f;
        System.out.print("请输入三角形第一个顶点坐标(空格键隔开):");
        a = sc.nextDouble();
        b = sc.nextDouble();
        System.out.print("请输入三角形第二个顶点坐标(空格键隔开):");
        c = sc.nextDouble();
        d = sc.nextDouble();
        System.out.print("请输入三角形第三个顶点坐标(空格键隔开):");
        e = sc.nextDouble();
        f = sc.nextDouble();
        Triangle03 tri = new Triangle03(a, b, c, d, e, f);
        System.out.println("该三角形的周长为:" + tri.getPerimeter());
        System.out.println("该三角形的面积为:" + tri.getArea());
    }
}

11.编写程序,提示从键盘输入一个字符串,然后显示字符串的长度及第一个和最后一个字符?

package demo1.code1;
import java.util.Scanner;
public class StringLength {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = new String();
        int length;
        System.out.print("请输入一个字符串:");
        str = sc.nextLine();
        length = str.length();
        char[] c = str.toCharArray();
        char last_char = c[length - 1];
        System.out.println("该字符串长度为:" + length);
        System.out.println("该字符串最后一个字符为:" + last_char);
    }
}

12.编写程序,提示从键盘输入两个字符串,然后检测第二个字符串是否包含于第一个串中?例如,字符串“Lambda expressions let you express instances of single-method classes more compactly.”和“express”,其中“express”包含于第一个字符串内。

package demo1.code1;
import java.util.Scanner;
public class TwoStringsContains {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str1, str2;
        System.out.print("请输入第一个字符串:");
        str1 = sc.nextLine();
        System.out.print("请输入第二个字符串:");
        str2 = sc.nextLine();
        if (str1.contains(str2)) {
            System.out.println("第二个字符串包含于第一个字符串内。");
        } else {
            System.out.println("第二个字符串不包含于第一个字符串内。");
        }
    }
}

13.编写程序生成2016个随机(int类型)整数,然后按“升序”排序?

package demo1.code1;
import java.util.Arrays;
import java.util.Random;
public class RandomInt2016 {
    public static void main(String[] args) {
        int num;
        Random ran = new Random();
        int[] array = new int[2016];
        for (int i = 0; i < 2016; i++) {
            num = ran.nextInt(2000);
            array[i] = num;
        }
        Arrays.sort(array);
        System.out.println(Arrays.toString(array));
    }
}

14.编写一个Java类实现查找1~n之间的素数?

package demo1.code1;
import java.util.Scanner;
public class OneToNPrime {
    public static void findPrime(int num) {
        boolean isPrime = true;
        for (int i = 2; i <= num; i++) {
            for (int j = 2; j < i; j++) {// 不能写j<=i,任何数都能被自身整除
                if (i % j == 0) {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime) {
                System.out.print(i + " ");
            }
            isPrime = true;
        }
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num;
        System.out.println("请输入一个正整数:");
        num = sc.nextInt();
        System.out.println("1~" + num + "之间的素数有:");
        findPrime(num);
    }
}

15.阶乘函数f(n)=n!,其中n为正整数。试设计一个计算阶乘的方法,并计算f(5)和f(10)的值。

package demo1.code1;
import java.util.Scanner;
public class CalculateFactorial {
    public static int calculateFactorial(int num) {
        int result = 1;
        for (int i = 1; i <= num; i++) {
            result = result * i;
        }
        return result;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int result;
        int num;
        System.out.println("请输入一个正整数:");
        num = sc.nextInt();
        result = calculateFactorial(num);
        System.out.println(num + "!=" + result);
    }
}

16.有整数M,求出小于M的所有素数?

package demo1.code1;
import java.util.Scanner;
public class CalculateFactorial {
    public static int calculateFactorial(int num) {
        int result = 1;
        for (int i = 1; i <= num; i++) {
            result = result * i;
        }
        return result;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int result;
        int num;
        System.out.println("请输入一个正整数:");
        num = sc.nextInt();
        result = calculateFactorial(num);
        System.out.println(num + "!=" + result);
    }
}

17、利用下列数列计算圆周率的近似值。
在这里插入图片描述

package demo1.code1;
import java.util.Scanner;
public class CalculateΠ {
    public static double calculate(int num) {
        double result = 1;
        double sign = -1;// 如果sign是int类型的话会造成数据精度丢失
        for (int i = 2; i <= num; i++) {
            result = result + (sign / (2 * i - 1));
            sign *= (-1);
        }
        result *= 4;
        return result;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num;
        System.out.println("请输入一个整数:");
        num = sc.nextInt();
        System.out.println("圆周率的近似值为:" + calculate(num));
    }
}