如何在字符串中找到最大值?

时间:2014-04-07 01:16:11

标签: java string max

例如,如果用户输入“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;

}


}





    }

4 个答案:

答案 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;
}