我是java的初学者,无法使用此代码。我要做的是将任何输入的字符串转换为大写,而不使用toUpperCase字符串方法。这就是我所拥有的:
public String toUpperCase(String str)
{
for(int i = 0; i < str.length(); i++)
{
char a = str.charAt(i);
a = Character.toUpperCase(a);
str += Character.toString(a);
}
return str;
}
答案 0 :(得分:8)
您正在使用str
作为输入和输出(因此您的String
具有无限长度,因为您不断添加字符)。您可以使用static
,因为您没有使用实例状态。而且,您可以使用for-each
循环。最后,添加另一个String
,或更好的StringBuilder
,如
public static String toUpperCase(String str) {
StringBuilder sb = new StringBuilder();
for (char ch : str.toCharArray()) {
sb.append(Character.toUpperCase(ch));
}
return sb.toString();
}
答案 1 :(得分:5)
有以下方法,但它不考虑英语以外的任何字符(没有diacritics,a-z后面没有其他语言的字符。)
public String toUpperCase(String str) {
char[] chars = str.toCharArray();
for (int i=0; i<chars.length; i++) {
char c = chars[i];
if ('a' <= c && c <= 'z') {
chars[i] = (char) (c - 'a' + 'A');
}
}
return new String(chars);
}
答案 2 :(得分:2)
C&#39; mon guys,Java 8多年来已经出局了!
/**
* Converts an all-lowercase String to
* uppercase. Retains only spaces, any
* other characters will be lost.
*/
public static String toUpperCase(String s) {
int diff = 'a' - 'A'; // 32
return s.chars()
.filter(c -> c >= 'a' && c <= 'z' || c == ' ')
.mapToObj(c -> String.valueOf((char) (c - (diff))))
.collect(Collectors.joining());
}
答案 3 :(得分:1)
由于您无法使用toUpperCase()
方法,因此您可以使用ASCII table从小写字母到大写字母,减去32。
'a'= 97,'A'= 65
'b'= 98,'B'= 66
...
'z'= 122,'Z'= 90
public static int DIFF = 'a' - 'A'; // 32
public static String toUpperCase(String str) {
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray()) {
if (Character.isLowerCase(c)) {
sb.append(String.valueOf((char)(c - DIFF)));
} else {
sb.append(c);
}
}
return sb.toString();
}
答案 4 :(得分:1)
我知道你的学校可能不允许你使用StringBuilder
,以防万一你也不能使用数组。这是学校可能接受的另一种原始方法:
public static String toUpperCase(String s){
String str = "";
for(int x=0; x<s.length(); x++){
char ch = s.charAt(x);
if(ch >= 'a' && ch <= 'z')
str += "" + (char)(ch - 32);
else
str += "" + ch;
}
return str;
}
<强>测试强>
System.out.println(toUpperCase("aAbBcC"));
<强>输出:强>
AABBCC
答案 5 :(得分:1)
试一试:
public static String toUpperCase(String str) {
String result = "";
for (int i = 0; i < str.length(); i++) {
int v = str.charAt(i);
if (v > 96 && v < 123) {
v -= 32;
}
result+=(char)v;
}
return result;
}