gpt4 book ai didi

java - 递归打印所有其他字符

转载 作者:行者123 更新时间:2023-11-30 07:02:34 25 4
gpt4 key购买 nike

您好 StackOverflow 用户,我目前正在学习 Java 的 HS 类(class),所以至少可以说我是一个 Java 新手。现在,为了我自己的使用,我正在编写一个程序来接受用户输入并递归地打印出所有其他字母,而无需导入除 Scanner 之外的任何其他类。我的代码适用于奇数个字符,但不适用于偶数个字符。为什么会这样,你能建议一个简单的修复方案,而不需要所有这些我不明白的捕获/抛出的东西吗?我的代码发布在下面。谢谢,-Java 新手

import java.util.Scanner;
public class PrintChars
{
private String chunk;
public PrintChars ( )
{
chunk = "";
}

public static void main ( String [] args )
{
PrintChars p = new PrintChars ( );
p.GetPhrase ( );
p.Deconstruct ( );
}

public void GetPhrase ( )
{
Scanner console = new Scanner ( System.in );
do
{
System.out.print ( "\n\nEnter a phrase: " );
chunk = console.nextLine ( );
} while ( chunk == null );
System.out.println ( "\n\n" );
}

public void Deconstruct ( )
{
OneChar ( chunk );
System.out.println ( "\n\n" );
}

public int OneChar ( String c )
{

if ( c.equals ( "" ) )
return 1;
else
{
char first = c.charAt ( 0 );
c = c.substring ( 2 );
System.out.println ( first );
return OneChar ( c );
}
}
}

最佳答案

看起来你需要在尝试substring之前检查c...如果它的长度小于2,你会得到一个StringIndexOutOfBoundsException ,因为您尝试从索引 2 开始子字符串,但索引 2 不存在。试试这个:

public int OneChar ( String c )   
{

if ( c.equals ( "" ) )
return 1;
else
{
char first = c.charAt ( 0 );
System.out.println ( first );
if(c.length() > 2) {
c = c.substring ( 2 );
return OneChar ( c );
}
return 1;
}
}

关于java - 递归打印所有其他字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40646656/

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