Java 对于这个简单的循环,还有更优雅的解决方案吗?
您好,我是编程新手,我正在尝试解决一个问题,在这个问题中,我得到了一个由10个随机数组成的数组,我必须说明Java 对于这个简单的循环,还有更优雅的解决方案吗?,java,arrays,loops,Java,Arrays,Loops,您好,我是编程新手,我正在尝试解决一个问题,在这个问题中,我得到了一个由10个随机数组成的数组,我必须说明数是否在数组中 如果是-则程序必须显示消息“我找到了!”,如果不是-“该数字不在数组中!” 我写了这个解决方案,我想知道是否有更简单、更快的方法来解决它(Java语言) 输入:一个数字和一个数字数组 int cont=0; for(i=0; i<10;i++){ if(numbers[i]==number){ System.out.println("I foun
数是否在数组中
如果是-则程序必须显示消息“我找到了!”,如果不是-“该数字不在数组中!”
我写了这个解决方案,我想知道是否有更简单、更快的方法来解决它(Java语言)
输入:一个数字和一个数字数组
int cont=0;
for(i=0; i<10;i++){
if(numbers[i]==number){
System.out.println("I found it");
cont++;
break;
}
}
if(cont==0)
System.out.println("That number is not in the array!");
int cont=0;
对于(i=0;i请这样尝试(Java 8及更高版本):
到处使用流,仅仅因为它们是流,不是一个好主意,也不会使代码更干净,也不会使代码更可读,甚至更快
你的循环看起来不错,我不认为你可以在这里提高性能。我唯一要改变的是,我引入了find标志,代码少了一点
boolean found=false;
for(i=0; i<10; i++) {
if(numbers[i]==number) {
System.out.println("I found it");
found=true;
break;
}
}
if(!found)
System.out.println("That number is not in the array!");
boolean-found=false;
for(i=0;iIt可以做得更好,例如,当您发现任何情况时,通过直观的break
ing for循环(因为没有必要寻找更多)。您正在实现一个经典的搜索算法。如果没有对随机数进行排序,您的解决方案通常是最有效的(线性搜索),前提是您添加了一个分隔符
,正如另一条评论所指出的。但是,如果对随机数进行排序,那么您可以执行二进制搜索,这是对数搜索,效率更高。下面是一个二进制搜索的示例:。是的!我建议使用的一些工具是。您可以做一些真正有趣的事情(例如这种搜索)代码很少。我认为最后一个条件应该是if(cont==0)
。或者只使用布尔值而不是计数。您应该在找到数字后返回。这样,您就不需要在末尾使用if语句。
boolean found=false;
for(i=0; i<10; i++) {
if(numbers[i]==number) {
System.out.println("I found it");
found=true;
break;
}
}
if(!found)
System.out.println("That number is not in the array!");