Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 如果String.charAt(i)遇到空格,则会中断程序_Java_String - Fatal编程技术网

Java 如果String.charAt(i)遇到空格,则会中断程序

Java 如果String.charAt(i)遇到空格,则会中断程序,java,string,Java,String,下面的代码基本上用ABC中的反向字符替换字符串中的字符 例如,如果用户输入-AbC 那么结果就是ZyX 我的问题是,如果输入包含空格,那么它会中断代码,并且不会继续执行 import java.util.*; public class HelloWorld{ int[] capitals = new int[26]; int[] smalls = new int[26]; public static void main(String []args){

下面的代码基本上用ABC中的反向字符替换字符串中的字符

例如,如果用户输入-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++;
        }
     }
}
import java.util.*;
公共类HelloWorld{
int[]大写=新int[26];
int[]smalls=新int[26];
公共静态void main(字符串[]args){
HelloWorld rs=新HelloWorld();
rs.Initialize();
rs.Encode();
}
公共无效编码()
{
扫描仪阅读器=新扫描仪(System.in);
System.out.println(“输入字符串:”);
字符串输入=reader.next();
//System.out.println(“用户输入:”+输入);
字符串newString=“”;
int pos=0;
for(int in=0;in=65&(int)input.charAt(in)=97&(int)input.charAt(in)调用

查找并返回此扫描程序中的下一个完整令牌

通常,
扫描仪的标记由空格字符表示。从同一页:

扫描仪使用的默认空白分隔符由Character.isWhitespace识别

因此,当您调用
Scanner.next()
时,它只读取到第一个空格,因为您再也不会从中读取,所以当程序结束时,其余的输入将被丢弃

如果您想要用户输入的所有内容,请改用
nextLine

呼叫

查找并返回此扫描程序中的下一个完整令牌

通常,
扫描仪的标记由空格字符表示。从同一页:

扫描仪使用的默认空白分隔符由Character.isWhitespace识别

因此,当您调用
Scanner.next()
时,它只读取到第一个空格,因为您再也不会从中读取,所以当程序结束时,其余的输入将被丢弃


如果您想要用户输入的所有内容,请使用
nextLine

根据Javadoc

下一个() 查找并返回此扫描程序中的下一个完整令牌

空格是delimter,因此下一个标记始终是空格字符之前字符串的第一部分

您可以设置delimter模式,如下所述:


根据Javadoc

下一个() 查找并返回此扫描程序中的下一个完整令牌

空格是delimter,因此下一个标记始终是空格字符之前字符串的第一部分

您可以设置delimter模式,如下所述:


ZyX
AbC
的反面是什么?
ZyX
的反面是什么?