Java算法

JAVA1 类型转换

描述
设计一个方法,将一个小于2147483647的double类型变量以截断取整方式转化为int类型

输入描述:
随机double类型变量
输出描述:
转化后的int类型变量
示例1
输入:
12.34
输出:
12
示例2
输入:
1.88
输出:

1

   public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double d = scanner.nextDouble();
        System.out.println(TC.typeConversion(d));
    }
    public static int typeConversion(double d) {
       return (int)d;
    }
    }

JAVA2 简单运算

描述
输入两个正整数a和b,输出这两个正整数的和,差,积,商,模(若a>b则输出a-b,a/b,a%b的值反之输出b-a,b/a,b%a的值,不考虑小数,请使用int类型)
输入描述:
两个正整数
输出描述:
它们的和,差,积,商,模。每个值之间用空格隔开
示例1
输入:
10 5
输出:
15 5 50 2 0

 public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        scanner.close();
    if(a<b){
        int temp=a;
        a=b;
        b=temp;
    }
        System.out.printf("%d %d %d %d %d",a+b,a-b,a*b,a/b,a%b);
    }
}

JAVA3 四舍五入

描述
定义一个int类型变量i,i为由浮点数变量d四舍五入后的整数类型,请将转换后的i进行输出
输入描述:
用户随机输入的浮点数
输出描述:
四舍五入之后的整数(小数点后一位>=5则进一,否则舍去)
示例1
输入:
14.99
输出:
15

一种解法

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double d= scanner.nextDouble();
         int i=(int)d;
         if((d-i)>0.5){
             i++;
         }
        System.out.println(i);
    }
}

二种解法

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double d= scanner.nextDouble();
        int i=(int)(d+0.5);
        System.out.println(i);
    }
}

JAVA4 交换变量值

描述
在不使用第三个变量的情况下交换两个int类型变量的值
输入描述:
a变量和b变量的值
输出描述:
交换后a变量和b变量的值,中间用空格隔开
示例1
输入:
1 2
输出:
2 1

一种解法

  public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int temp=a;
        a=b;
        b=temp;
        System.out.println(a+" "+b);
    }
}

二种解法

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        a = a+b;
        b = a-b;
        a = a-b;
        System.out.println(a+" "+b);
    }
}

三种解法

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();
       a=a+b-(b=a);
        System.out.println(a+" "+b);
    }
}

JAVA5 计算商场折扣

描述
牛牛商场促销活动:
满100全额打9折;
满500全额打8折;
满2000全额打7折;
满5000全额打6折;
且商场有抹零活动,不足一元的部分不需要付款(类型强制转换)
牛大姨算不清楚自己应该付多少钱,请你帮忙算一下
输入描述:
牛大姨账单钱数(int类型)
输出描述:
参加活动后,牛大姨应付钱数(int类型)
示例1
输入:
654
输出:
523

一种解法

public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        int price = console.nextInt();
        int cost = 0;
        if(price>=5000){
            cost=(int)(price*0.6);
        }else if(price>=2000){
            cost = (int) (price * 0.7);
        }else if(price>=500){
            cost = (int) (price * 0.8);
        }else if(price>=100){
            cost=(int)(price*0.9);
        }else{
           cost=(int)(price);
        }
        System.out.println(cost);
    }
}

二种解法

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        int price = console.nextInt();
        int cost = 0;

        //write your code here......
        //考虑到购买5000元东西的人很少,应从小到大判断,以减少判断次数
        cost=(int)(price<100 ? price : price<500
                  ? price*0.9 : price<2000
                  ? price*0.8 : price<5000
                  ? price*0.7 : price*0.6);
        System.out.println(cost);
    }
}

JAVA6 判断体重指数

描述
体重指数 = 体重 (kg) / ( 身高 (m) × 身高 (m) ),小于18.5属于偏瘦,介于18.5和20.9之间(左闭右开)属于苗条,介于20.9和24.9之间(左闭右闭)属于适中,超过24.9属于偏胖。下面由你来编写一段逻辑,算出输入了身高和体重的用户的体重指数,并返回他们的身材状态。(体重指数请使用double类型)
输入描述:
用户的身高(m)和用户的体重(kg)
输出描述:
体重指数代表的用户身材状态
示例1
输入:
1.75 62.5
输出:
苗条
示例2
输入:
1.5 40
输出:
偏瘦
示例3
输入:
1.85 80
输出:
适中
示例4
输入:
2 100
输出:
偏胖

一种解法

  public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double height = scanner.nextDouble();
        double weight = scanner.nextDouble();
        double whh=weight/(height*height);
        if(whh>24.9){
            System.out.println("偏胖");
        }else if(whh>=20.9&&whh<=24.9){
            System.out.println("适中");
        }else if(whh>=18.5&&whh<20.9){
            System.out.println("苗条");
        }else{
            System.out.println("偏瘦");
        }
    }
}

二种解法

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double height = scanner.nextDouble();
        double weight = scanner.nextDouble();

        //write your code here......
        scanner.close();
        //我想着少定义一个bmi变量
        System.out.print(weight/(height*height)<18.5 ? "偏瘦" : weight/(height*height)<20.9
                        ? "苗条" : weight/(height*height)<24.9
                        ? "适中" : "偏胖");

    }
}

JAVA7 判断学生成绩等级

描述
现有如下成绩等级A,B,C,D。其中A代表优秀,B代表良好,C代表及格,D代表不及格。现在请你来为学生的成绩进行分级,如果用户输入错误则输出未知等级。
输入描述:
成绩等级对应的中文表述
输出描述:
优秀,良好,及格,不及格,未知等级
示例1
输入:
A
输出:
优秀
示例2
输入:
B
输出:
良好
示例3
输入:
C
输出:
及格
示例4
输入:
D
输出:
不及格
示例5
输入:
E
输出:
未知等级

一种解法

    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String grade = scanner.next();
     switch (grade){
         case "A":
         System.out.println("优秀");
         break;
         case "B":
             System.out.println("良好");
             break;
         case "C":
             System.out.println("及格");
             break;
         case "D":
             System.out.println("不及格");
             break;
         default:
             System.out.println("未知等级");
 }
    }
}
二种解法
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String grade =scanner.next();
        if(grade.equals("A")){
            System.out.println("优秀");
        }
        else if(grade.equals("B")){
            System.out.println("良好");
        }
        else if(grade.equals("C")){
            System.out.println("及格");
        }
        else if(grade.equals("D")){
            System.out.println("不及格");
        }
        else{
            System.out.println("未知等级");
        }
        //write your code here......
    }
}

三种解法

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String grade =scanner.next();

        //write your code here......
        scanner.close();
        //等号比较字符串时会比较地址值,因为String是引用数据类型
        //而String的equals被重写过,所以比较的是内容是否相等
        System.out.print("A".equals(grade) ? "优秀" : "B".equals(grade)
                        ? "良好" : "C".equals(grade)
                        ? "及格" : "D".equals(grade)
                        ? "不及格" : "未知等级");

    }
}

JAVA8 邮箱验证

描述
请根据给出的正则表达式来验证邮箱格式是否合法,如果用户输入的格式合法则输出「邮箱格式合法」,否则输出「邮箱格式不合法」。
输入描述:
任意字符串
输出描述:
根据输入的邮箱格式判断其合法于不合法,若输入字符串符合邮箱格式则输出邮箱格式合法,否则输出邮箱格式不合法
示例1
输入:
123123@nowcoder.com
输出:
邮箱格式合法
示例2
输入:
123123
输出:
邮箱格式不合法

一种解法

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.next();
        String emailMatcher="[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z0-9]+";
        //修饰符+表示至少匹配其中的一个字符
        //修饰符?表示可以匹配其中零个或一个字符
        //A-z作用等于a-zA-Z
        // \d匹配数字0-9
        // \D匹配非0-9
        // \w匹配字母、数字、下划线,除了特殊字符和空格
        // {n,m}匹配至少n次,至多m次
        // ^表示字符串匹配开始的标志

        // 更多正则表达式匹配详见:https://www.runoob.com/java/java-regular-expressions.html
        //write your code here......
       if(str.matches(emailMatcher)){
           System.out.println("邮箱格式合法");
       }else {
           System.out.println("邮箱格式不合法");
       }
    }
}

二种解法

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.next();
        String emailMatcher="[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z0-9]+";

        //利用matches()方法进行正则匹配,如果合法,则输出"邮箱格式合法",否则输出"邮箱格式不合法"
        System.out.println(str.matches(emailMatcher)?"邮箱格式合法":"邮箱格式不合法");

    }
}

JAVA9 数列求和

描述
有数列为:9,99,999,…,9999999999。要求使用程序计算此数列的和,并在控制台输出结果。(请尝试使用循环的方式生成这个数列并同时在循环中求和)
输入描述:

输出描述:
将该数列的和直接输出
一种解法

   public static void main(String[] args) {
        long []Array=new long[10];
        Array[0]=9;
       long sum=0;
        for (int i = 1; i < 10; i++) {
            Array[i]=Array[i-1]*10+9;
            sum+=Array[i];
        }
        System.out.println(sum+9);
    }
}

二种解法

 public static void main(String[] args) {
    //write your code here........
    long[] str=new long[10];
    long num=0;
    for(int i=1;i<=10;i++){
        str[i-1]=(long)Math.pow(10,(double)i)-1;
        num+=str[i-1];
    }
    System.out.print(num);
}

JAVA10 统计输入正数个数

描述
控制台输入整数,请设计一个死循环,当用户输入非正数时停止输入。请给出用户输入的正整数个数(默认输入个数不超过2147483647)
输入描述:
若干整数,整数之间用空格隔开
输出描述:
控制台输入的正整数个数
示例1
输入:
1 2 3 4 5 6 7 0
输出:
7

一种解法

 public static void main(String[] args) {
        int count = 0;
        Scanner scanner = new Scanner(System.in);
        while (true) {
            int num = scanner.nextInt();
            if (num <= 0) break;
            else count++;
        }
        System.out.println(count);

    }
}

JAVA11 求最小公倍数

**描述
编写一个方法,该方法的返回值是两个不大于100的正整数的最小公倍数
输入描述:
两个int类型变量作为方法的参数
输出描述:
int类型的变量,值为两个数的最小公倍数
示例1
输入:
3 7
输出:
21

一种解法

import java.util.*;

public class Main {
    public static void main(String[] args) {
        //标准输入
        Scanner console = new Scanner(System.in);
        int m = console.nextInt();
        int n = console.nextInt();
        //计算最小公倍数
        int result = getCM(m, n);
        //输出结果
        System.out.println(result);
    }

    //计算最小公倍数
    public static int getCM(int m, int n){
        //计算m、n中较大者
        int max=Math.max(m,n);
        //从max到m*n之间找最小公倍数
        for(int i=max;i<=m*n;i++){
            //如果既能被m整除又能被n整除,说明是最小公倍数,直接返回
            if(i%m==0&&i%n==0){
                return i;
            }
        }
        return -1;
    }
    
}

二种解法

    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        int m = console.nextInt();
        int n = console.nextInt();
        int result = getCM(m, n);
        System.out.println(result);
    }
    public static int getCM(int m, int n) {
            int max = (m > n) ? m : n;
            int min = (m < n) ? m : n;
            int i;
            for (i = min; i <= min * max; i++) {
                if (i % min == 0 && i % max == 0) {
                    return i;
                }
            }
            return 0;
        }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值