我想使用两个字符串并使用for方法将字符替换为新字符串。
示例:"两个"和"一个"
结果:" townoe"
这是我到目前为止所做的,而且我真的不知道如何完成它。
public class Alternator {
String alternate(String a, String b) {
String s = "";
for (int i = 0; i < a.length(); i++) {
s += i;
System.out.println(s);
}
return null;
}
}
答案 0 :(得分:1)
public class Alternator{
public static String alternate(String a, String b){
String s = "";
int i = 0;
while (i < a.length() && i < b.length()){
s += a.charAt(i) +""+ b.charAt(i);
i++;
}
while (i < a.length() ){
s += a.charAt(i);
i++;
}
while (i < b.length()){
s += b.charAt(i);
i++;
}
return s;
}
public static void main(String[] args){
String a = "two", b = "one";
String s = Alternator.alternate(a,b);
System.out.println(s);
}
}
要使用for循环而不是while循环,只需删除带有for行的所有行,如下所示,然后从每个while循环中删除i ++行
for(; i < a.length() && i < b.length(); i++){
//the inside of the loop MINUS THE LINE i++
}
for(; i < a.length(); i++){
//the inside of the loop MINUS THE LINE i++
}
for(; i < b.length(); i++){
//the inside of the loop MINUS THE LINE i++
}
答案 1 :(得分:1)
这是一种紧凑的方式:
String alternate(String a, String b) {
StringBuilder builder = new StringBuilder();
int smallerStringLength = Math.min(a.length(), b.length());
for (int i = 0; i < smallerStringLength; i++) {
builder.append(a.charAt(i));
builder.append(b.charAt(i));
}
return builder.toString();
}
甚至更优化:
String alternate(String first, String second) {
char[] firstChars = first.toCharArray();
char[] secondChars = second.toCharArray();
int smallerCharsCount = Math.min(firstChars.length, secondChars.length);
StringBuilder builder = new StringBuilder(smallerCharsCount * 2);
for (int i = 0; i < smallerCharsCount; i++) {
builder.append(firstChars[i]);
builder.append(secondChars[i]);
}
return builder.toString();
}
答案 2 :(得分:0)
使用此:
String alternate(String a, String b){
StringBuilder builder = new StringBuilder();
final int greaterLength = a.length() > b.length() ? a.length() : b.length();
for(int i = 0; i < greaterLength; i++){
if (i < a.length()) {
builder.append(a.charAt(i));
}
if (i < b.length()) {
builder.append(b.charAt(i));
}
}
return builder.toString();
}
它使用String.charAt
方法获取字母,使用StringBuilder
创建字符串。
(当给出两个不等长的字符串时,它返回前两个字符的交替,然后只返回剩余的字符串.EG:Hello
和Hi
- &gt; { {1}})
答案 3 :(得分:0)
假设两个字符串的长度完全相同,您可以执行以下操作。如果它们的长度不同,那么目前您的提示不会说明您希望如何设置结果字符串。
public class Alternator {
String alternate(String a, String b) {
String s = "";
for (int i = 0; i < 2*a.length(); i++) {
if (i%2==0) // modular arithmetic to alternate
s += a.charAt(i/2); // Note the integer division
else
s += b.charAt(i/2);
}
System.out.println(s);
return s;
}
}
或者,更容易,但索引我没有标记字符串s的长度:
public class Alternator {
String alternate(String a, String b) {
String s = "";
for(int i = 0; i < a.length(); i++){
s += a.charAt(i);
s += b.charAt(i);
}
return s;
}
}
答案 4 :(得分:0)
根据我读过的评论,您无法理解循环,以及如何将它们与字符串一起使用。
for循环通常用于迭代数组,或执行给定次数的任务。
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
这会给出输出
0
1
2
3
4
for循环从初始化程序的值开始,首先放入int i = 0;
然后检查表达式,for循环的第二部分,如果返回true,则执行大括号内的所有代码。 i < 5;
一旦完成,它就会运行增量器,即for循环的最后一部分。 i++
之后,它再次检查表达式。我想你可以看到这是怎么回事。在表达式返回false之前,for循环的花括号内的所有内容都会反复执行。
可以使用for循环迭代字符串,但不能像使用array[index]
的数组一样引用它。您必须将其转换为数组,在String上使用.toCharArray()
,并将结果返回到空的char数组char[]
,或者在字符串上使用.charAt(index)
方法。
此代码将遍历一个字符串,并逐个输出每个字符:
for (int i = 0; i < myString.length(); i++) {
System.out.println(myString.charAt(i));
}
如果字符串的值为“Hello”,则输出为:
H
e
l
l
o
使用它,我们可以使用+ {:
将它们放入一个空字符串,而不是使用System.out.println();
输出字符。
myOtherString += myString.charAt(i);
这意味着,如果我们想要一次检查两个字符串,并像你一样替换它们,我们可以同时迭代两个字符串,并将它们添加到一个新字符串中:
myAlternatedString += myString.charAt(i);
myAlternatedString += myOtherString.charAt(i);
如果MyString仍为“Hello”且myOtherString为“World”,则新字符串为:
Hweolrllod
答案 5 :(得分:0)
以下代码读取2个不同的输入并合并为单个字符串。
public class PrintAlternnateCharacterString {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String a = in.next();
String b = in.next();
String mergedString = "";
int lenA = a.length();
int lenB = b.length();
if (lenA >= lenB) {
for (int i = 0; i < lenA; i++) {
if (i < lenB) {
mergedString += a.charAt(i) + "" + b.charAt(i);
} else {
mergedString += a.charAt(i);
}
}
}
if (lenB > lenA) {
for (int i = 0; i < lenB; i++) {
if (i < lenA) {
mergedString += a.charAt(i) + "" + b.charAt(i);
} else {
mergedString += b.charAt(i);
}
}
}
System.out.println("the merged string is-->" + mergedString);
}
}
答案 6 :(得分:0)
public static String stringConcate(String str1,String str2){
String str3="";
if(str1!=null && str2!=null && !str1.isEmpty() && !str2.isEmpty()){
if(str1.length()==str2.length()){
for(int i=0;i<=str1.length()-1;i++){
str3+=str1.charAt(i);
str3+=str2.charAt(i);
}
}
if(str1.length()>str2.length()){
for(int i=0;i<=str1.length()-1;i++){
str3+=str1.charAt(i);
if(i<str2.length()){
str3+=str2.charAt(i);
}
}
}
if(str2.length()>str1.length()){
for(int i=0;i<=str2.length()-1;i++){
if(i<str1.length()){
str3+=str1.charAt(i);
}
str3+=str2.charAt(i);
}
}
}
return str3;
}
答案 7 :(得分:0)
如果字符串长度相同或长度不同,这将起作用。
static void mergeStrings(String a, String b) {
StringBuilder mergedBuilder = new StringBuilder();
char[] aCharArr = a.toCharArray();
char[] bCharArr = b.toCharArray();
int minLength = aCharArr.length >= bCharArr.length ? bCharArr.length : aCharArr.length;
for (int i=0; i<minLength; i++) {
mergedBuilder.append(aCharArr[i]).append(bCharArr[i]);
}
if(minLength < aCharArr.length) {
mergedBuilder.append(a.substring(minLength));
}
else{
mergedBuilder.append(b.substring(minLength));
}
Systemout.println(mergedBuilder.toString());
}
答案 8 :(得分:0)
String str1 = "one"; String str2 = "two";
StringBuilder sb = new StringBuilder();
int i = 0;
for (; i < str1.length() && i < str2.length(); i++) {
sb.append(str1.charAt(i)).append(str2.charAt(i));
}
for(; i < str1.length(); i++) {
sb.append(str1.charAt(i));
}
for(; i < str2.length(); i++) {
sb.append(str2.charAt(i));
}
System.out.println("result = " + sb.toString());// otnweo
这也将处理不同的长度
答案 9 :(得分:0)
使用非常简单的if...else
可能会带来麻烦。
public static void main(String... args) {
int[] one = { 1, 2, 3 };
int[] two = { 44, 55, 66, 77, 88 };
System.out.println(Arrays.toString(alternate(one, two)));
}
public static int[] alternate(int[] one, int[] two) {
int[] res = new int[one.length + two.length];
for (int i = 0, j = 0, k = 0; i < res.length; i++) {
if (i % 2 == 0)
res[i] = j < one.length ? one[j++] : two[k++];
else
res[i] = k < two.length ? two[k++] : one[j++];
}
return res;
}
输出:
[1, 44, 2, 55, 3, 66, 77, 88]