70分求教
查看原帖
70分求教
749028
QAQ5楼主2024/12/29 11:23
import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String number = scanner.nextLine();
        if (isInt(number)) {
            number = reverse(number);
            number = ridLeftZero(number);
            if (number.isEmpty())
                number = "0";
            System.out.println(number);
        } else if (isSmallNum(number)) {
            String[] two = number.split("\\.");
            String Int = two[0], small = two[1];
            Int = reverse(Int);
            small = reverse(small);
            Int = ridLeftZero(Int);
            small = ridRightZero(small);
            if (Int.isEmpty())
                Int = "0";
            if (small.isEmpty())
                System.out.println(Int);
            else
                System.out.println(Int + "." + small);
        } else if (isDivideNum(number)) {
            //和小数一样地转
            String[] two = number.split("/");
            String mother = two[0], son = two[1];
            mother = reverse(mother);
            son = reverse(son);
            mother = ridLeftZero(mother);
            son = ridRightZero(son);
            if (mother.isEmpty())
                mother = "0";
            if (son.isEmpty())
                son = "0";
            if (mother.equals("0"))
                System.out.println("0");
            else
                System.out.println(mother + "/" + son);
        } else if (isPercentageNum(number)) {
            number = number.split("%")[0];
            number = reverse(number);
            number = ridLeftZero(number);
            if (number.isEmpty())
                number = "0";
            if (number.equals("0"))
                System.out.println("0");
            else
                System.out.println(number + "%");
        } else System.out.println("未知数");
    }

    static String ridRightZero(String Int) {
        Int = reverse(Int);
        Int = ridLeftZero(Int);
        return reverse(Int);
    }

    static String ridLeftZero(String Int) {
        ArrayList<Character> ones = new ArrayList<>();
        char[] chars = Int.toCharArray();
        for (char aChar : chars) {
            ones.add(aChar);
        }
        while (!ones.isEmpty() && ones.getFirst() == '0') ones.removeFirst();
        char[] result = new char[ones.size()];
        for (int i = 0; i < result.length; i++) {
            result[i] = ones.get(i);
        }
        return new String(result);
    }

    static String reverse(String Int) {
        char[] ones = Int.toCharArray();
        for (int left = 0, right = Int.length() - 1; left < right; left++, right--) {
            char cup = ones[left];
            ones[left] = ones[right];
            ones[right] = cup;
        }
        return new String(ones);
    }

    static boolean isInt(String number) {
        //不是其它数就剩下这个
        return !isSmallNum(number) && !isDivideNum(number) && !isPercentageNum(number);
    }

    static boolean isPercentageNum(String number) {
        //包含%百分号就是百分比数
        char[] ones = number.toCharArray();
        for (char one : ones) {
            if (one == '%')
                return true;
        }
        return false;
    }

    static boolean isDivideNum(String number) {
        //包含/除号就是分数
        char[] ones = number.toCharArray();
        for (char one : ones) {
            if (one == '/')
                return true;
        }
        return false;
    }

    static boolean isSmallNum(String number) {
        //包含小数点就是小数
        char[] ones = number.toCharArray();
        for (char one : ones) {
            if (one == '.')
                return true;
        }
        return false;
    }
}

要考虑这么多情况?

2024/12/29 11:23
加载中...