gpt4 book ai didi

java - 混音串程序

转载 作者:行者123 更新时间:2023-12-01 12:14:38 24 4
gpt4 key购买 nike

我已经编写了混合两个字符串的程序。例如 string1 =hi string2=there输出 htihere 但我收到 java.lang.StringIndexOutOfBoundsException

import java.util.*;
public class Test2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str,str1;
System.out.println("Enter two strings");
str=scan.nextLine();
str1=scan.nextLine();
mixString(str,str1);
}

private static void mixString(String str,String str1) {
String s1,s2;
s1=str;
s2=str1;
int a,b;
a=s1.length();
b=s2.length();
char[] ch = new char[a+b];
int d=0;
for(int i=0,j=0;i+j<(a+b);i++,j++) {
ch[d]=s1.charAt(i);d++;
ch[d]=s2.charAt(j);d++;
}
System.out.println(ch);
}
}

最佳答案

主要问题出在您的 for 循环中:

for(int i=0,j=0;i+j<(a+b);i++,j++) { ch[d]=s1.charAt(i);d++; ch[d]=s2.charAt(j);d++; }

我们的情况应该看起来更像这样:

int i=0,j=0,d=0;
for (; i < a && j < b; ++i,++j)

这确保了只要两个字符串都有可用的字母,我们就只循环组合代码。

我们需要声明迭代变量,以便它们的范围在此循环之外,这样我们就可以使用较长的字符串从上次中断的地方继续:

int i=0,j=0,d=0;
for (; i < a && j < b; ++i,++j) {
ch[d] = s1.charAt(i); ++d;
ch[d] = s2.charAt(j); ++d;
}
for (; i < a; ++i) {
ch[d] = s1.charAt(i);
++d;
}
for (; j < b; ++j) {
ch[d] = s2.charAt(j);
++d;
}

这两个循环需要位于组合字符的第一个循环之后。这两个循环最多只会执行一个,因为第一个循环的完成保证这两个循环之一的条件已经返回 false

关于java - 混音串程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27090524/

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