题库练习7(最小公倍数、求立方根、字符串逆序、记负均正、字符串分割)

1. 求最小公倍数

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        
        int a=sc.nextInt();
        int b=sc.nextInt();
        
        System.out.println(getMin(a,b));
    }
    
    public static int getMin(int a,int b){
        int max=a>b?a:b;
        int min=max==a?b:a;
        
        while(max%min!=0){
            int temp=max%min;
            max=min;
            min=temp;
        }
        return a*b/min;
    }
}

2. 求立方根

计算一个数字的立方根,不使用库函数

详细描述:

  • 接口说明
    • 原型:
    • public static double getCubeRoot(double input)
    • 输入:double 待求解参数
    • 返回值:double  输入参数的立方根,保留一位小数

2.1 分析

Java中求立方根需要了解牛顿迭代法。

牛顿迭代法。设f(x)=x^3-y, 求f(x)=0时的解x,即为y的立方根。

根据牛顿迭代思想,x_{n+1}=x_{n}-f(x_n)/f'(x_n)x=x-(x^3-y)/3x^2=(2x+y/x/x)/3

import java.util.*;
import java.text.DecimalFormat;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        
        double d=sc.nextDouble();
        DecimalFormat df = new DecimalFormat(".0");
        System.out.println(df.format(getCubeRoot(d)));
    }
    
   public static double getCubeRoot(double input){
        double a=input;
        double b=(2*a+input/a/a)/3;
        while(Math.abs(b-a)>0.000001){
            a=b;
            b=(2*a+input/a/a)/3;
        }
        return b;
    }
}

注:

1. 输出格式的设置(保留两位小数)

public class Test {
    public static void main(String[] args) {
        double d = 756.2345566;

        //方法一:最简便的方法,调用DecimalFormat类
        DecimalFormat df = new DecimalFormat(".00");
        System.out.println(df.format(d));

        //方法二:直接通过String类的format函数实现
        System.out.println(String.format("%.2f", d));

        //方法三:通过BigDecimal类实现
        BigDecimal bg = new BigDecimal(d);
        double d3 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        System.out.println(d3);

        //方法四:通过NumberFormat类实现
        NumberFormat nf = NumberFormat.getNumberInstance();
        nf.setMaximumFractionDigits(2);
        System.out.println(nf.format(d));

    }
}

3. 字符串逆序

将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。 如:输入“I am a student”,输出“tneduts a ma I”。

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        
        String str=sc.nextLine();
        
        System.out.println(reverse(str));
    }
    
    public static String reverse(String str){
        Stack stack=new Stack<>();
        
        char[] chs=str.toCharArray();
        for(int i=0;i

4. 记负均正

从输入任意个整型数,统计其中的负数个数并求所有非负数的平均值

import java.util.*;
import java.text.DecimalFormat;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        ArrayList list=new ArrayList<>();
        while(sc.hasNext()){
            list.add(sc.nextInt());
        }
        
        getResult(list);
    }
    
    public static void getResult(ArrayList list){
        if(list==null){
            System.out.println(0);
            System.out.println(0);
            return;
        }
        int count=0;
        double sum=0.0;
        for(int i=0;i

5. 字符串分割

连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组,

长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入描述:首先输入数字n,表示要输入多少个字符串。连续输入字符串(输出次数为N,字符串长度小于100)

输出描述:按长度为8拆分每个字符串后输出到新的字符串数组,长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

import java.util.Scanner;
import java.util.ArrayList;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();
            sc.nextLine();
            ArrayList list=new ArrayList<>();
            int i=0;
            while(i getResult(ArrayList list){
        if(list==null)
            return null;
        ArrayList res=new ArrayList<>();
        
        for(int i=0;i=8){
                res.add(str.substring(0,8));
                str=str.substring(8);
            }
            if(str.length()<8&&str.length()>0){
                str+="00000000";
                res.add(str.substring(0,8));
            }
        }
        return res;
    }
}
 

 

你可能感兴趣的:(算法)