Java 如何将字符串转换为字符?
我试图使用扫描仪从用户输入中提取一个字符串,计算每个字符的值,并在其ASCII值中添加2,如果我输入abc,我希望它输出cde。我尝试了下面的代码,得到了一个无法将字符转换为int的错误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
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 Writingc=inputString.toCharArray()覆盖您的更改,并使c[i]+=2
什么都不做。从for循环内部删除该行。(而且你还没有修复System.out.println(c)
,它会打印一些不合理的东西。你不能像那样打印数组。)太棒了,谢谢!如果我想让它不改变特殊字符,如空格和标点符号,我可以只写和If-else语句吗?