gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:44:53 25 4
gpt4 key购买 nike

以下代码基本上用 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++;
}
}
}

我做错了什么?

最佳答案

调用Scanner.next()

Finds and returns the next complete token from this scanner.

通常,扫描仪的标记由空格字符界定。来自同一页面:

The default whitespace delimiter used by a scanner is as recognized by Character.isWhitespace.

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

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

关于java - 如果 String.charAt(i) 遇到空格,则会中断程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36406838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com