我的问题很简单:如何检查String是否超过60%大写?
答案 0 :(得分:4)
遍历字符串并计算每个大写字符。然后将此值除以字符串长度。
答案 1 :(得分:1)
尝试:
int uppers = 0;
for(char c : s.toCharArray()) {
if(Character.isUpperCase(c)) {
++uppers;
}
}
double pct = (uppers * 1D) / (s.length() * 1D) * 100D;
if(pct > 60D) {
// do somnething
}
答案 2 :(得分:0)
这样的事情应该这样做。完全没有测试过。
public boolean getPercentUpperCase(String str, int morethenpercent) {
int lowercaseChars = 0, uppercaseChars = 0;
for (int i = 0; i >= str.length() -1; i++) {
if (Character.isUpperCase(str.charAt(i))) {
uppercaseChars++;
} else {
lowercaseChars++;
}
}
return (Math.round(uppercaseChars / lowercaseChars) > morethenpercent);
}
答案 3 :(得分:0)
试试这个
String test="AvCFrB";
char[] arr = test.toCharArray();
int count = 0;
for (int i = 0; i < arr.length; i++) {
boolean upperCase = Character.isUpperCase(arr[i]);
System.out.println(arr[i]+"="+upperCase);
if(upperCase)
count++;
}
double percentage = (count*1.0/test.length()*1.0)*100;
System.out.println(percentage);
输出 -
A=true
v=false
C=true
F=true
r=false
B=true
66.66666666666666
答案 4 :(得分:0)
它完全基于编程和数学。你自己编程会更好。但是,您可以按照以下流程进行操作。
答案 5 :(得分:0)
我在这里给出了我的解决方案,看起来像其他一些但我认为有一些改进。 您可以在此处尝试我的解决方案:https://ideone.com/KGmMDa。
请注意,我使用while
循环,因为我不喜欢break
:
int upCount = 0;
int index = 0;
double percentLimit = str.length() * 0.6;
boolean upper = false;
while (!upper && (index < str.length())) {
if(Character.isUpperCase(str.charAt(index))) {
upCount++;
upper = upCount >= percentLimit;
}
index++;
}
return upper;
Grrr,这里有for
和break
,但我讨厌break
:(
int upCount = 0;
double percentLimit = str.length() * 0.6;
for (char c : str.toCharArray()) {
if(Character.isUpperCase(c)) {
upCount++;
if (upCount >= percentLimit) {
break;
}
}
}
return (upCount >= percentLimit);
答案 6 :(得分:0)
您还可以使用java 8中的流API来实现此目的。
public class Test {
public static void main(String[] args){
System.out.println(is60PercentUpper("aBc GH")); //true
}
static boolean is60PercentUpper(String s){
return s.chars()
.filter(Character::isLetter)
.map(Test::upperCaseMapper)
.summaryStatistics()
.getAverage() >= 0.60;
}
static int upperCaseMapper(int c){
return Character.isUpperCase(c) ? 1 : 0;
}
}
它的作用是: