打印置换字符串的问题
给出字符串(abc)希望实现:abc,acb,bac,bca,cab,cba的输出,程序如下:
import java.lang.*;
public class P412
{
public static void prt(int n,String str)
{
if (n<1)
{ return;
}
else if (n==1)
{
System.out.println(str);
}
else
{
for(int i=0;i<n;i++){
char tmpc=str.charAt(i);
String lft;
String rght;
if (i>0)
lft=str.substring(0,i-1);
else
lft="";
if(i<n)
rght=str.substring(i+1,n-1);
else
rght="";
String tmps=lft+rght;
System.out.print(tmpc);
prt(n-1,tmps);
}
}
}
public static void main(String[] args)
{
prt(3,"abc");
//System.out.println("Hello World!");
}
}
编译通过,运行出错,提示:
ab
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String ind
ex out of range: 1
at java.lang.String.charAt(String.java:455)
at P412.prt(P412.java:17)
at P412.prt(P412.java:30)
at P412.main(P412.java:36)
请高手指点,谢谢
import java.lang.*;
public class P412
{
public static void prt(int n,String str)
{
if (n<1)
{ return;
}
else if (n==1)
{
System.out.println(str);
}
else
{
for(int i=0;i<n;i++){
char tmpc=str.charAt(i);
String lft;
String rght;
if (i>0)
lft=str.substring(0,i-1);
else
lft="";
if(i<n)
rght=str.substring(i+1,n-1);
else
rght="";
String tmps=lft+rght;
System.out.print(tmpc);
prt(n-1,tmps);
}
}
}
public static void main(String[] args)
{
prt(3,"abc");
//System.out.println("Hello World!");
}
}
编译通过,运行出错,提示:
ab
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String ind
ex out of range: 1
at java.lang.String.charAt(String.java:455)
at P412.prt(P412.java:17)
at P412.prt(P412.java:30)
at P412.main(P412.java:36)
请高手指点,谢谢
...全文
相关推荐
页面置换算法 fifo opt lru
这些算法在内存管理领域中有着广泛的应用,用于处理虚拟内存与物理内存之间的数据交换问题。### 一、先进先出(FIFO)先进先出算法是一种简单的页面置换策略。
76道高难度CC编程题.pdf
将其中以A开头的单词与以N结尾的单词,用头尾交换的办法予以置换。知识点:* 字符串处理:使用C++的字符串类std::string来处理文本。* 字符串操作:使用C++的字符串操作函数来进行头尾交换。
系统学习TCL
掌握这些概念和技能后,你将能够编写出复杂而高效的TCL脚本来解决实际问题。
huawei_TCL培训教程(经典).doc
- - **变量置换**:使用`$`符号来引用变量,例如`set x 5; puts "$x"`将打印出变量x的值。
DES按行加密解密文本-C语言实现
在DES加密后,生成的二进制数据可能包含非打印字符,不适合直接在网络上传输。因此,通常会将加密后的数据先进行BASE64编码,使得结果成为只包含ASCII字符的字符串,方便在网络上传输和显示。


Java SE
