Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的Java应用程序在Java中将大字母转换为小字母和相反字母有什么问题_Java - Fatal编程技术网

我的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