给定一个函数处理输入值,要求输出结果值最大,但是输出只能从1,2,3中数字中选。
输入
213
3244
22
100
输出
213
3233
22
33
import java.util.Scanner;
import java.lang.Math;
public class findMaxNum {
public static void main(String[] args) {
findMaxNum main = new findMaxNum();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = sc.nextInt();
//System.out.println(nums[i]);
}
for (int i = 0; i < n; i++) {
System.out.println(main.maxNums(nums[i]));
}
}
private int maxNums(int a) {
int maxNum = 0;
String stringNumber = Integer.toString(a);
int len = stringNumber.length();
// char[] charArraysNumber = stringNumber.toCharArray();
int[] arrayNumbers = new int[len];
for (int i = 0; i < len; i++) {
arrayNumbers[i] = stringNumber.charAt(i) -'0';
if (arrayNumbers[i] >= 1 && arrayNumbers[i] <= 2) {
arrayNumbers[i] = arrayNumbers[i];
}else {
arrayNumbers[i] = 3;
}
}
StringBuilder s = new StringBuilder();
for (int i : arrayNumbers) {
s.append(i);
}
int changedNumber = Integer.parseInt(s.toString());
if (changedNumber > a) {
maxNum = changedNumber - (int)Math.pow(10, len - 1);
}else {
maxNum = changedNumber;
}
return maxNum;
}
}
此篇博客介绍了一种编程方法,通过给定整数数组,利用Java实现一个名为`findMaxNum`的函数,目标是将每个输入数字转换为仅包含1, 2, 3的字符串形式,并保持最大可能数值。作者展示了如何处理边界情况和如何调整数字以求得最大输出。


被折叠的 条评论
为什么被折叠?



