所以我试着写一个方法来检测用户给出的所有大写字母。这怎么可能?是否可以使用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);
}
}
}
答案 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]", "");
您最终会得到一个只包含输入大写字母的字符串。