java 一段反转大小写的代码问题 这段代码可以编译 但是不能运行 这是怎么了? 如下↓↓↓
//ChangeUpDown.javapublicclassChangeUpDown{publicStrings="TestString";publicvoidchang...
//ChangeUpDown.java
public class ChangeUpDown{
public String s = "TestString";
public void change(){
char[] c = s.toCharArray();
for (int i = 0; i<c.length ; i++){
if ( ((int)c[i]>96)&&((int)c[i]<123) ){
c[i] = (char)(c[i-32]);
}else if ( ((int)c[i]>64)&&((int)c[i]<91) ){
c[i] = (char)(c[i+32]);
}
}
for (int i = 0; i<c.length ; i++){
System.out.print(c[i]);
}
}
}
少了一段main方法 可是 加上了 一样不行 这怎么办?
//main()
public static void main(String[] args){
ChangeUpDown c = new ChangeUpDown();
c.change();
} 展开
public class ChangeUpDown{
public String s = "TestString";
public void change(){
char[] c = s.toCharArray();
for (int i = 0; i<c.length ; i++){
if ( ((int)c[i]>96)&&((int)c[i]<123) ){
c[i] = (char)(c[i-32]);
}else if ( ((int)c[i]>64)&&((int)c[i]<91) ){
c[i] = (char)(c[i+32]);
}
}
for (int i = 0; i<c.length ; i++){
System.out.print(c[i]);
}
}
}
少了一段main方法 可是 加上了 一样不行 这怎么办?
//main()
public static void main(String[] args){
ChangeUpDown c = new ChangeUpDown();
c.change();
} 展开
6个回答
展开全部
你好。
把这行代码
c[i] = (char)(c[i-32]);
修改为
c[i] = (char)(c[i]-32);
把这行代码
c[i] = (char)(c[i+32]);
修改为
c[i] = (char)(c[i]+32);
就可以了。完整的修改代码参考如下:
public class ChangeUpDown
{
public String s = "TestString";
public void change(){
char[] c = s.toCharArray();
for (int i = 0; i<c.length ; i++){
if ( ((int)c[i]>96)&&((int)c[i]<123) ){
c[i] = (char)(c[i]-32);
}else if ( ((int)c[i]>64)&&((int)c[i]<91) ){
c[i] = (char)(c[i]+32);
}
}
for (int i = 0; i<c.length ; i++){
System.out.print(c[i]);
}
}
public static void main( String[] args )
{
ChangeUpDown cud = new ChangeUpDown( );
System.out.println("before change:"+cud.s);
System.out.print("after change:");
cud.change( );
}
}
望采纳!
展开全部
我没仔细检查其他逻辑,但是这里
c[i] = (char)(c[i-32]);
是不是应该改成
c[i] = (char)(c[i]-32);
另一处也是同样道理。
不行吗,我给你完整代码。
public class ChangeUpDown {
public static void main(String[] args) {
System.out.println(change("TestString"));
}
public static String change(String source) {
char[] cs = source.toCharArray();
for (int i = 0; i < cs.length; i++) {
if (cs[i] >= 65 && cs[i] <= 90) {
cs[i] += 32;
} else if (cs[i] >= 97 && cs[i] <= 122) {
cs[i] -= 32;
}
}
return new String(cs);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用 Character的 isUpperCase/toUpperCase/isLowerCase/toLowerCase 判断和转换。
追问
稍微具体点。
追答
public class ChangeCase {
public static void main(final String[] args){
System.out.println(changeCase("Test String"));
}
public static String changeCase(String s){
StringBuilder builder = new StringBuilder(s.length());
for(char c : s.toCharArray()){
if(Character.isUpperCase(c)) {
builder.append(Character.toLowerCase(c));
} else {
builder.append(Character.toUpperCase(c));
}
}
return builder.toString();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for (int i = 0; i < c.length; i++) {
if (((int) c[i] > 96) && ((int) c[i] < 123)) {
c[i] = (char) (c[i] - 32);
} else if (((int) c[i] > 64) && ((int) c[i] < 91)) {
c[i] = (char) (c[i] + 32);
}
}
加个main函数跑跑试试先~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
改成这样就对了
package day0425;
import org.junit.Test;
//ChangeUpDown.java
public class ChangeUpDown{
public String s = "TestString";
@Test
public void change(){
char[] c = s.toCharArray();
for (int i = 0; i<c.length ; i++){
if ( ((int)c[i]>96)&&((int)c[i]<123) ){
c[i] = (char)(c[i]-32);
}else if ( ((int)c[i]>64)&&((int)c[i]<91) ){
c[i] = (char)(c[i]+32);
}
}
for (int i = 0; i<c.length ; i++){
System.out.print(c[i]);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你那提示报什么错误?把错误截图出来看看!还有为什么你要自己写这个大小写的转换了,java自身就自带了大小写的转换函数的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询