例如,如果用户输入“ABZ748FJ9K”作为字符串,我将如何精确定位该字符串的最大值(在本例中为9),然后将其输出回用户。
任何非数字字符都应该被忽略。
我尝试过做一些if-else梯形图,但是这需要我列出每个数字,并且它的表现并不像我想要的那样。我知道必须有更好的解决方案。一些帮助将不胜感激。谢谢!
import java.util.Scanner;
public class Question{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.println("Please enter a string");
String userInput = input.next();
int finalMax = max(userInput);
System.out.println("The maximum value is " + finalMax);
}
public static int max(String s){
int x = s.length();
int y = 0;
for (int i=0; i < x; i++){
if (s.charAt(i) == 9){
y=9;
}
else if (s.charAt(i) == 8){
y=8;
}
}
return y;
}
}
}
答案 0 :(得分:2)
试试这个:
public static int max(String s){
s=s.replaceAll("\\D","");
int x = s.length();
int y = Character.getNumericValue(s.charAt(0));
for (int i=1; i < x; i++){
if (Character.getNumericValue(s.charAt(i)) > y){
y=Character.getNumericValue(s.charAt(i));
}
}
return y;
}
s=s.replaceAll("\\D","")
通过将所有非数字字符替换为digit
""
答案 1 :(得分:0)
使用以下功能代替您的版本:
public static int max(String s){
int x = s.length();
int y = 0;
Character temp = null;
for (int i=0; i < x; i++){
char ch = s.charAt(i);
if (ch >= '0' && ch <='9' && (temp == null || temp < ch )){
temp = s.chartAt(i);
}
}
return Integer.valueOf(temp);
}
答案 2 :(得分:0)
用0开始一个最大值,然后你将循环该字符串。每个循环你必须验证它是char还是int,如果int则检查它是否是&gt;如果是,则设置新的最大值。
我作为一个挑战留给你,想想字符串的每个位置将被视为一个字符。
干杯。祝你好运。
答案 3 :(得分:0)
你应该尝试类似的东西:
public static int max(String s){
int max = -1;
char current;
for(int i = 0; i<s.length; i++){
current = s.charAt(i);
if(current > '0' && current < '9')
if(current > max)
max = current;
}
return max;
}