输入一个不小于 100 且小于 1000,同时包括小数点后一位的一个浮点数,例如 123.4 ,要求把这个数字翻转过来,变成 4.321 并输出。
1.首先需要明白底层就是问字符串,我需要将其分割两部分,以小数点为界,第一部分为整数,第二部分为小数,再将其反转,在组合到一起;
import java.util.Scanner;
public class ReverseFloat {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 提示用户输入一个浮点数
System.out.print("请输入一个浮点数(不小于100且小于1000,包含小数点后一位):");
String input = scanner.nextLine(); // 读取输入的字符串
// 检查输入格式是否正确
if (!input.matches("\\d{3}\\.\\d")) {
System.out.println("输入格式错误,请输入一个不小于100且小于1000的浮点数,包含小数点后一位。");
return;
}
// 分离整数部分和小数部分
String[] parts = input.split("\\.");
String integerPart = parts[0]; // 整数部分
String decimalPart = parts[1]; // 小数部分
// 翻转整数部分和小数部分
String reversedIntegerPart = new StringBuilder(integerPart).reverse().toString();
String reversedDecimalPart = new StringBuilder(decimalPart).reverse().toString();
// 组合翻转后的结果
String result = reversedDecimalPart + "." + reversedIntegerPart;
// 输出结果
System.out.println(result);
scanner.close(); // 关闭扫描器
}
}
if (!input.matches("\\d{3}\\.\\d"))
是用来检查输入的字符串是否符合一个特定的浮点数格式。具体来说,这个正则表达式的含义是:
-
\\d{3}
:表示必须有3个连续的数字。\\d
是正则表达式中表示“任意数字(0-9)”的符号,{3}
表示“恰好出现3次”。 -
\\.
:表示必须有一个小数点。\\
是转义字符,因为在正则表达式中,.
是一个特殊字符(表示任意字符),所以需要用\\
来转义,使其表示字面意义上的小数点。 -
\\d
:表示小数点后面必须有1个数字。 -
StringBuilder
是Java中用于操作字符串的一个类,它提供了许多方便的方法来修改字符串。与String
不同,StringBuilder
是可变的,这意味着你可以直接修改它的内容,而不会像String
那样每次修改都会创建一个新的