一道500强外企机试题。。。。

ceasarcn 2009-07-18 07:38:40
传入三个数组,
a={"football","basketball","volleyball"};
b={"adi","rabk","ghy","|","nike","|","adi","rty"};
c={"","","","","",""};

根据a数组元素查找"football",如果在a[0]处找到,就把b数组里第1个"|"前的第一个元素打印c数组长度次。即打印6次System.out.println("adi");
同理,如果在a[1]处找到"football",就把b数组里第2个"|"前的第一个元素打印c数组长度次。即打印6次System.out.println("nike");

其实我已经写了一个,但是现在总是不好定位到要打印的那个元素。程序后部分有问题的,请各位帮忙指点一下哦。。。先谢了
static void testGenerator(String[] a,String[] b,String[] c)

{

int count = 0,k = 0,end = 0;

for(int i=0;i<a.length;i++)

{

if("ata".equals(a[i]))

{

count = i;

break;

}

}

for(int j=0;j<b.length;j++)

{

if("CC".equals(b[j]))

{

k++;

if(k == count)

{

end = k+1;

break;

}

}

}

for(int n=0;n<c.length;n++)

{

System.out.println(b[end]);

}



}

...全文
99 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ceasarcn 2009-07-19
  • 打赏
  • 举报
回复
感觉需求还是没说清,楼上的方案适合0和1的情况。但是实际上a的元素个数和b的"|"有相对应的关系形式。即如果a有3元素:
a={"football","basketball","volleyball"};
那么b={"ds","fr","|","fde","|","wew","vfr","bgt","|"};
同理如果a有5元素,b中也会出现5次 "|",所以如果a中第四个出现"football",我们需要把b中第四个"|"前的第一个元素打印c数组长度次。
ceasarcn 2009-07-19
  • 打赏
  • 举报
回复
楼上的,十分感谢。。呵呵,确实有一个地方疏忽却一直没看出来,,就是
if(k == count)
{

end = j+1;
break;
}
应该是《j+1》,多谢3楼和5楼的热心帮助。。。:)
designedIt 2009-07-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ceasarcn 的回复:]
感觉需求还是没说清,楼上的方案适合0和1的情况。但是实际上a的元素个数和b的"|"有相对应的关系形式。即如果a有3元素:
a={"football","basketball","volleyball"};
那么b={"ds","fr","|","fde","|","wew","vfr","bgt","|"};
同理如果a有5元素,b中也会出现5次 "|",所以如果a中第四个出现"football",我们需要把b中第四个"|"前的第一个元素打印c数组长度次。

[/Quote]
我也是菜鸟,我是从你的代码中边学习边试着改的。不要笑话啊。代码好像能运行了,结果好像对的。


public class TestSearch {

static void testGenerator(String[] a,String[] b,String[] c)

{

int count = -1,k = 0,end = -1; //好像count初值为-1,end初值为-1

for(int i=0;i <a.length;i++)

{

if("volleyball".equals(a[i]))

{

count = i;

break;

}
}

if(count==-1){//好像要检查一下
System.out.println("数组a中找不到。");return;
}

if(count==0)
{
end=0;
}
else{
for(int j=0;j <b.length;j++)

{

if("|".equals(b[j])) //在b中找"|"

{

k++;

if(k == count)

{

end = j+1; //应该是j+1吧

break;

}

}

}//for
}//if
for(int n=0;n <c.length;n++)

{

System.out.println(b[end]);

}



}
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
testGenerator(new String[]{"football","basketball","volleyball"},
new String[]{"ds","fr","|","fde","|","wew","vfr","bgt","|"},
new String[]{"","","","","",""} );
}

}


wew
wew
wew
wew
wew
wew
melody1128 2009-07-18
  • 打赏
  • 举报
回复

public void getReturn(String[] a,String[] b,String[] c) {
String str = "football";
int times = c.length;
int index = 2;
for (int i = 0; i < a.length; i++) {
if (a[i].equals("football"))
index = i;
}
printStr(getFirStr(index,b),times);
}

public String getFirStr(int index,String[] b) {
String str = null;
if (index == 0) {
str = b[0];
} else if (index == 1) {
for (int i = 0; i < b.length; i++) {
if (b[i].equals("|")) {
str = b[i + 1];
break;
}
}
}

return str;

}

public void printStr(String str,int times){
for(int i=0;i<times;i++){
System.out.println(str);
}
}
bocai17 2009-07-18
  • 打赏
  • 举报
回复
用正则定位,正则会用不,会用就很简单了
WYhack 2009-07-18
  • 打赏
  • 举报
回复
学习!!!!

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧