以下代码基本上用ABC中的反向字符替换字符串中的字符。
EG。如果用户输入 - AbC
然后结果将是ZyX
我的问题是,如果输入包含空格,那么它会破坏代码并且不会继续执行。
import java.util.*;
public class HelloWorld{
int[] capitals = new int[26];
int[] smalls = new int[26];
public static void main(String []args){
HelloWorld rs=new HelloWorld();
rs.Initialize();
rs.Encode();
}
public void Encode()
{
Scanner reader = new Scanner(System.in);
System.out.println("Enter string: ");
String input = reader.next();
//System.out.println("User entered: " + input);
String newString="";
int pos=0;
for (int in = 0; in < input.length(); in++)
{
if(input.charAt(in) == ' ')
{
newString += " ";
}
else
{
if((int)input.charAt(in) >= 65 && (int)input.charAt(in) <= 90)
{
for(int i = 0; i< 26; i++) {
if((int)input.charAt(in) == capitals[i]) {
newString += (char)capitals[25-i];
}
}
}
else if((int)input.charAt(in)>=97 && (int)input.charAt(in) <= 122)
{
for(int i = 0; i< 26; i++) {
if((int)input.charAt(in) == smalls[i]) {
newString += (char)smalls[25-i];
}
}
}
else
{
if(input.charAt(in) == ' ')
newString += " ";
else
newString += input.charAt(in);
}
}
pos = 0;
}
System.out.println(newString);
}
public void Initialize()
{
int pos=0;
for (int i=65;i<=90;i++)
{
capitals[pos] = i;
smalls[pos]= i + 32;
pos++;
}
}
}
我做错了什么?
答案 0 :(得分:2)
查找并返回此扫描仪的下一个完整令牌。
通常,空格字符描绘Scanner
的标记。从同一页面:
扫描仪使用的默认空白分隔符由Character.isWhitespace识别。
因此,当你调用Scanner.next()
时,它只会在第一个空格之前读取,并且由于你再也没有读过它,所以在程序结束时会丢弃其余的输入。
如果您想要用户输入的所有内容,请改用nextLine
。
答案 1 :(得分:0)
根据Javadoc
下() 从此扫描仪中查找并返回下一个完整的令牌。
空格是分隔符,因此下一个标记始终是空格字符前字符串的第一部分。
您可以按照此处的说明设置分隔符模式: