所以我们的目标是寻找像" zip"和" zap"在字符串中,以' z'开头并以' p'结尾。然后,对于所有这些字符串,删除中间字母。
我的想法是,我使用for循环来检查字符串的每个字母,一旦它到达' z'它就会得到indexOf(' p')并将中间的所有内容放入ArrayList中,同时从原始字符串中删除自己,以便找到indexOf(' p')。
问题是我找不到办法,因为我对Java很新。如果有人可以提供帮助,我会感激不尽:)
到目前为止这是我的代码
package Homework;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
public class ZipZap {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
List<String> list = new ArrayList<String>();
System.out.print("Write a sentence with no spaces:");
String sen = in.next();
int len = sen.length();
int p1 = sen.indexOf('p');
String word = null;
String idk = null;
for(int i=0; i<len; i++){
if(sen.charAt(i)=='z'){
word = sen.substring(i, p1+1);
list.add(word);
idk = sen.replace(word,"");
i=0;
}
}
}
}
答案 0 :(得分:1)
使用这个,这里我使用“\ bz.p \ b”模式来查找包含z的起始字符的任何单词,并以p结尾,任何内容都可以介于
之间 String s ="Write a sentence with no zip and zap spaces:";
s=s.replaceAll("\\bz.p\\b", "zp");
System.out.println(s);
<强>输出:强>
Write a sentence with no zp and zp spaces:
或者可以是
s.replaceAll("z\\w+p", "zp");
在这里你可以检查字符串
答案 1 :(得分:0)
我认为您说输入zipzapityzoop
应该更改为zpzpityzp
i
,a
和oo
进入list
{1}}。如果我误解了你的意图,请纠正我。
你正在路上,似乎了解基础知识。我看到的问题很小,但当然你想解决它们:
zip
,zap
和zoop
,您需要在找到p
之后找到z
。当您在索引z
找到i
时,您可以使用sen.indexOf('p', i + 1)
在p
之后找到z
(第二个参数会导致搜索开始于那个指数)。z
时,都会将i
设置为0,从字符串的开头开始。不需要这样做,这样你的程序永远不会停止。sen.substring(i, p1+1)
时,zip
取出所有i
。您需要将参数调整为substring()
。sen.replace(word, "")
的使用将取代word
的所有出现。因此,一旦您修改程序以从a
取出zap
,zappa
将变为zpp
(不是zppa
),azap
将成为zp
String
。没有简单的方法可以从StringBuilder
中删除一个特定的子字符串。我认为解决方案是使用delete
类。它有一个idk
方法,它将删除两个指定索引之间的部分,这是你需要的(呃,这是一个家庭作业,你不应该使用你没有在课堂上学过的课程? )sen
,然后继续搜索zpzapityzoop
。这就像依次将zipzpityzoop
,zipzapityzp
和idk
分配给zpzpityzp
,但从不StringBuilder
。但是,如果您按照我的建议使用StringBuilder
,那么只需使用相同的if(((n1,n2,n3,n4,n5)%2)==0) //it only check for n5 because comma operator seperates the values and gives only last value(i.e. n5) for computaion.
,您就可以了。希望它能帮到你。