编写一个字符浏览器,输入字符串以及需要查找的字符或字符串,浏览器自动定位所有出现该字符或字符串的位置

packagego;importjava.util.Scanner;publicclasshello3{publicstaticvoidmain(String[]args... package go;

import java.util.Scanner;

public class hello3 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入一段字符:");
String zfc=input.next();
System.out.println("请输入要查询的字符:");
String m=input.next();
int i;
for(i=0;i<zfc.length();i++){
i=zfc.indexOf(m);
System.out.println(i);
}
}
}
帮忙看下哪里错了
展开
 我来答
hanzsim
2011-04-17 · TA获得超过1540个赞
知道小有建树答主
回答量:922
采纳率:0%
帮助的人:1096万
展开全部
你程序中zfc.indexOf(m)用的不合适。
你的目的是找出所有出现的可能,而indexOf(String)的效果是从头查找,所以这个循环很有可能会无限进行下去。
你应该是找到一次出现后,就从这次出现的下一个位置继续找,这样才能找到所有出现,并且不会重复。
indexOf是个多态的函数,有一个形态就可以做到这样:从指定位置开始查找,而不是开头。
indexOf(int, String)
你的那个for循环应该修改成这样:
int i;
for(i=zfc.indexOf(m);i!=-1;i=zfc.indexOf(i+1,m)){
System.out.println(i);
}
注意,这里假定的是"222"可看做"22"+"2"也可看做"2"+"22"。
如果希望在"222"中只查到一个"22",则for循环为:
for(i=zfc.indexOf(m);i!=-1;i=zfc.indexOf(i+m.length(),m)){
追问
你确定不会死循环?   还有indexOf里面可以放两个量吗?
追答
我汗....你看看API文档不就知道了?
IamYihan
2011-04-17 · TA获得超过364个赞
知道小有建树答主
回答量:98
采纳率:100%
帮助的人:193万
展开全部
打个比方来看你这段代码
假如先输入一段字符串123456
再输入要查询的字符2
然后进入循环,当i为0时,进入循环体内,i=zfc.indexOf(m),此时i为1,然后将i加1,继续循环,又进入循环体内执行了一遍i=zfc.indexOf(m),i又变为1,那这个循环可就结束不了了,这就是问题所在。

可以利用Pattern和Matcher类——
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一段字符:");
String zfc = input.next();
System.out.println("请输入要查询的字符:");
String m = input.next();
Pattern p = Pattern.compile(m);
Matcher ma = p.matcher(zfc);
while (ma.find()) {
System.out.println(ma.start());
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-17
展开全部
import java.util.Scanner;

public class hello3 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入一段字符:");
String zfc=input.next();
System.out.println("请输入要查询的字符:");
String m=input.next();
int i;
int z = 0;
for(i=0;i<zfc.length();i++){
z=zfc.indexOf(m);
}
z++;
System.out.println(z);
}
}
追问
这样,,,  好像只能输出最后一位出现的位置吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式