我的Java应用程序在Java中将大字母转换为小字母和相反字母有什么问题
应该是我的Java应用程序在Java中将大字母转换为小字母和相反字母有什么问题,java,Java,应该是 if (Character.isLowerCase(c)){ str.toUpperCase(); } else { str.toLowerCase(); } 字符串是不可变的对象 请参见邓肯的答案,了解如何翻转角色。或者,你也可以玩得很开心,用加法和减法翻转外壳。不过,这仅在处理字母字符时有效 if (Character.isLowerCase(c)){
if (Character.isLowerCase(c)){
str.toUpperCase();
}
else {
str.toLowerCase();
}
字符串是不可变的对象
请参见邓肯的答案,了解如何翻转角色。或者,你也可以玩得很开心,用加法和减法翻转外壳。不过,这仅在处理字母字符时有效
if (Character.isLowerCase(c)){
str = str.toUpperCase();
}
else {
str = str.toLowerCase();
}
publicstaticvoidmain(字符串[]args)引发异常{
字符串str=“AbcD”;
char[]chars=str.toCharArray();
for(int i=0;i
之所以这样做,是因为大写和小写ascii字符的字符值彼此相差32。试试这个
public static void main(String[] args) throws Exception {
String str = "AbcD";
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
char c = chars[i];
if (Character.isLowerCase(c)) {
chars[i] -= 32;
} else {
chars[i] += 32;
}
}
System.out.print(new String(chars));
}
import java.io.Serializable;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公共班机{
/**
*@param args
*/
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
扫描仪输入=新扫描仪(System.in);
System.out.println(“plz输入字符串”);
String str=input.nextLine();
char[]chars=str.toCharArray();
对于(int i=0;i要翻转字符串中的字符大小写,请转换为字符数组并进行处理。由于Java字符串是不可变的,您当前的代码实际上是在执行工作并放弃答案。此外,您还调用了str.ToUpperCase()
,这会将整个字符串更改为大写
以下是一个例子:
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.println("plz enter a string");
String str=input.nextLine();
char[] chars = str.toCharArray();
for (int i=0; i<str.length();i++){
char c=chars[i];
if (Character.isLowerCase(c)){
chars[i] = Character.toUpperCase(c);
}
else {
chars[i] = Character.toLowerCase(c);
}
}
System.out.print(new String(chars));
}
}
字符串是不可变的。每个修改字符串的操作都会返回一个新的字符串。因此它应该是str=str.toUpperCase();
(但是我不确定这是您想要的)(因此调用str.toUpperCase
并忽略结果是没有帮助的…)是否希望AbcD的结果为AbcD?是的,String
是不可变的。您需要创建一个新的String
来更改其大小写,例如:String newString=str.toUpperCase();System.out.println(newString);
函数toUpperCase()和tolcoverse()的作用是什么是吗?我认为OP打算翻转每个字符的大小写。因此问题不仅在于字符串的不变性,还在于所采取的整个方法(例如使用str.ToUpperCase()
).WOW 10x快速回答,但如果我不想使用数组,我只需要将新字符放在新字符串的low\up之后?@user3473379我认为这是不可能的。无论如何……你为什么不想使用数组?我知道现在有办法解决这个问题,而不使用数组。非常感谢
public static void main(String[] args) throws Exception {
String str = "AbcD";
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
char c = chars[i];
if (Character.isLowerCase(c)) {
chars[i] -= 32;
} else {
chars[i] += 32;
}
}
System.out.print(new String(chars));
}
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.println("plz enter a string");
String str=input.nextLine();
char[] chars = str.toCharArray();
for (int i=0; i<str.length();i++){
char c=chars[i];
if (Character.isLowerCase(c)){
chars[i] = Character.toUpperCase(c);
}
else {
chars[i] = Character.toLowerCase(c);
}
}
System.out.print(new String(chars));
}
}
public static void main(String[] args) throws Exception {
String str = "AbcD";
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
char c = chars[i];
if (Character.isLowerCase(c)) {
chars[i] = Character.toUpperCase(c);
} else {
chars[i] = Character.toLowerCase(c);
}
}
System.out.print(new String(chars));
}
aBCd