解题:
假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码【123和12345】那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出的电话号码【指定传入参数类型如示例所示】
函数参数示例: public void function(int [] numbers){}
package JingDian; public class Pnumber {
public static void main(String[] args){
int[] a={123,1234,12345,123456,1234567};
cnotPrint num = new cnotPrint();
num.function(a);
}
} class cnotPrint{
public void function(int[] numbers){
//用于标记的数组,输出不重复元素
int[] res = new int[numbers.length];
for(int t=0;t<res.length;t++){
res[t]=0;
}
//要让String型的数组长度与int型的数组长度相等,否则会报空指针错
String[] len = new String[numbers.length];
for(int i=0;i<numbers.length;i++)
{ len[i]=numbers[i]+"";
//整型数组转换为string的
//System.out.println(len[i]); }
//嵌套的循环用于比较String数组中两两间的长度关系
for(int i=0;i<len.length;i++)
{
for(int j=0;j<len.length;j++){
if(len[j].length()>len[i].length())
{
//大数跟小数相差的位数
int n = len[j].length() - len[i].length();
//相差几位,小数就乘以10的几次方
int t = (int) ((numbers[i])*(Math.pow(10,n)));
//大数减去乘完的小数得出结果的位数正好是相差的位数且这个数没有输出国
if((((numbers[j] - t)+"").length() == n)&&res[j]!=1)
{ System.out.print(numbers[j]+";");
//若这个数已经被输出则标记为1
res[j]=1;
}
}
} } }
}