假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码【123和12345】那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出的电话号码(java实现)
2014-04-13 21:22 大额_skylar 阅读(486) 评论(1) 编辑 收藏 举报解题:
假如现在有一堆长度大于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; } } } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?