如何检测用户给出的字符串中的所有大写字母?

时间:2017-05-13 23:35:16

标签: java algorithm

所以我试着写一个方法来检测用户给出的所有大写字母。这怎么可能?是否可以使用ASCII值执行此操作?有可能以另一种方式吗?请给我建议以及提出此算法的最佳方法

注意:问题如源CODE底部所述

消息来源

Scanner sc = new Scanner(System.in);
private String userPassword;
private char[] passChar;
private int passwordScore = 0;

public String getPassword(){
    userPassword = sc.nextLine();
    passChar = userPassword.toCharArray();
    return userPassword;
}
// Ingore this comment below, this is just for me
//do for( char i : passChar.length) or actualy if statmen so that if the pass is not 8 charaters long it doesnt qulafiy
public void passRequirments(){

}

public int passLength(){     
    for(char upperCase: passChar){          
        passwordScore = passwordScore + 4;     
    }

    return passwordScore;
 }


//THIS IS WHERE IM HAVING TROUBLE 
public void passUpper(){        
    for (char c : passChar){          
        if (Character.isUpperCase(passChar.charAt(c))){
        }
    }
}

问题

public void passUpper(){ 
      for (char c : passChar){      
          if (Character.isUpperCase(passChar.charAt(c))){
              passwordScore =  passwordScore + ((userPassword.length()- passChar.charAt(c)) * 2);
          }
      }
  }

2 个答案:

答案 0 :(得分:0)

我认为这样的事情可能是一个可行的解决方案

    import java.io.*;
    import java.util.*;

    public class Main{


      public static int printUpperCaseLetters(String s)
      {
        char[] ch = new char[s.length()];
        ch = s.toCharArray();
        int cap_count = 0;
        for(int i=0; i<ch.length; i++)
        {
          int val = (int)ch[i];
          if(val>=65 && val<=90)
          {
            cap_count++;
            System.out.println(ch[i]);
          }
        }
        return cap_count;
      }

      public static void main(String[] args) throws IOException {
        Scanner input = new Scanner(System.in);
        String s = input.next();
        // So this method returns you the capital letters count inside of the string
        int cap_count = printUpperCaseLetters(s);
      }
    }

希望这有帮助!

您可以获取功能部件并将其添加到您的代码中。

只关注printUpperCaseLetters方法并将String传递给此方法。

答案 1 :(得分:0)

只需使用正则表达式将所有非大写字母替换为空格:

string = string.replaceAll("[^A-Z]", "");

您最终会得到一个只包含输入大写字母的字符串。