Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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 - Fatal编程技术网

Java 如何将字符串转换为字符?

Java 如何将字符串转换为字符?,java,Java,我试图使用扫描仪从用户输入中提取一个字符串,计算每个字符的值,并在其ASCII值中添加2,如果我输入abc,我希望它输出cde。我尝试了下面的代码,得到了一个无法将字符转换为int的错误 String inputString; System.out.println("Input: "); Scanner sc = new Scanner(System.in); inputString = sc.nextLine(); sc.close(); int len=inputString.length

我试图使用扫描仪从用户输入中提取一个字符串,计算每个字符的值,并在其ASCII值中添加2,如果我输入abc,我希望它输出cde。我尝试了下面的代码,得到了一个无法将字符转换为int的错误

String inputString;
System.out.println("Input: ");
Scanner sc = new Scanner(System.in);
inputString = sc.nextLine();
sc.close();

int len=inputString.length();
char[] c = inputString.toCharArray();

for(int i = 0; i < len; i++)
{ 
    c[i] +=2;
    c = inputString.toCharArray();
}
System.out.println(c);
}
字符串输入字符串;
System.out.println(“输入:”);
扫描仪sc=新的扫描仪(System.in);
inputString=sc.nextLine();
sc.close();
int len=inputString.length();
char[]c=inputString.toCharArray();
对于(int i=0;i
您不能只使用数组(任何类型)编写
+=2
,然后让Java更改整个数组。你必须做一些类似的事情

for (int i = 0; i < len; i++) {
  name[i] += 2;
}
for(int i=0;i
此外,您正在将
name
中的每个字符初始化为输入字符串的第一个字符,因此它将只是
{'a','a','a'}
。您应该将初始化更改为
name[i]=inputString.charAt(i)
,或者使
name=inputString.tocharray()
一次完成所有操作


最后,您不能像现在这样用Java打印数组。您需要编写类似于
System.out.println(String.valueOf(name))

的内容。请不要发布代码的屏幕截图。您可以将代码粘贴到问题中!正如您所知,
char
不包含ASCII值;它包含一个Unicode/UTF-16代码单元。您的算法在
a
到“x”的范围内工作。为了清楚地说明这一点并防止错误输出,请执行类似以下操作:
if(c[i]<'a'或c[i]>'x')抛出新异常(“输入字符必须在'a'到'x'范围内”)
@FredK,是的,这更荒谬,所以我首先猜测了OP的目的。为了清楚起见,你应该在循环之前添加
char[]name=inputString.tocharray()
,因为OP似乎不知道它,可能在循环之后添加
String outputString=new String(name)
,即使直接打印
名称
数组也可以。嘿,伙计们,对不起,我是Java新手。我编辑了上面的代码,但当我运行代码时,它只打印我的输入,不做任何更改。@ZachNaltan Writing
c=inputString.toCharArray()覆盖您的更改,并使
c[i]+=2
什么都不做。从for循环内部删除该行。(而且你还没有修复
System.out.println(c)
,它会打印一些不合理的东西。你不能像那样打印数组。)太棒了,谢谢!如果我想让它不改变特殊字符,如空格和标点符号,我可以只写和If-else语句吗?