Java算法解题小记

1. 返回两个整数中的最小值

int min2(int a, int b){
    return a < b ? a : b;
	}

2. 返回三个整数中的最小值

int min3(int a, int b, int c){
        int min2;
        return c < (min2=a < b ? a : b) ? a : min2;
    }

3. 将小数以百分号的形式输出

//保留两位小数并自动进行四舍五入操作
DecimalFormat num = new DecimalFormat(".00%");
double a = 0.127863;
System.out.println(num.format(a));

输出结果:

12.79%

4. 检查字符串是否为纯数字

String a = "314321";
String b = "X987";
System.out.println(a.matches("[0-9]+"));
//[0-9]相当于\d,因此上式也可以写为:"\\d+"
System.out.println(b.matches("[0-9]+"));

输出结果:

true
false

5. 检查某个变量是否为a-z或A-Z的字符

String str = "x";
String str1 = "2";
System.out.println(str.matches("[A-z]"));
System.out.println(str1.matches("[A-z]"));

输出结果:

true
false

6. 判断一个数是否为素数

判断整数n是否为素数时只需循环到sqrt(n)即可,因为n必有一个小于或等于其平方根的因数,那么验证素数时就只需要验证到其平方根即可

7. 求两个数的最大公约数和最小公倍数

使用辗转相除法求两个数的最大公约数:

public static int getGCD(int a, int b) {
     //确保a比b大
     if (a < b){
         int temp = a;
         a = b;
         b = temp;
     }
     if (a % b == 0) {
         return b;
     }else {
         //递归运算
         return getGCD(b, a % b);
     }
}

两个数的最小公倍数等于两数的乘积除以两数的最大公约数:

int a = 4, b = 6;
 System.out.println("最小公倍数:"+a*b/getGCD(a,b));

8. !scanner.hasNext(".")的注意点

有题目要求以一个英文句点".“为标志结束输入的时候,不能使用 while (!scanner.hasNext(”."))来进行输入的判断,因为正则表达式中的"."表示用于查找单个字符(除了换行和行结束符),否则当输入单个字符时while的条件仍然不成立从而导致结果错误。可使用如下方式代替:

 while (true){
   temp = scanner.next();
   if (!".".equals(temp))
       arr.add(temp);
   else
      break;
}

9. 比较字符串是否相等时忽略大小写

比较字符串是否相等时忽略大小写可使用equalsIgnoreCase方法:

String str1 = "HeLlo";
System.out.println(str1.equalsIgnoreCase("hello"));

输出结果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值