java - Java fizzBuzz(来自 CodingBat-Array2 的练习)
问题描述
我有这个来自codingBat https://codingbat.com/prob/p153059的fizzBuzz 练习,我的解决思路非常基本:
public String[] fizzBuzz(int start, int end) {
int n=end-start;
String[] array=new String[n];
for(int i=0;i<n;i++){
if(((start+i) % 3 ==0) && ((start+i) % 5 ==0)) array[i]="FizzBuzz";
if((start+i) % 5 ==0) array[i]="Buzz";
if((start+i) % 3 ==0) array[i]="Fizz";
else{
array[i]=String.valueOf((start+i));
}
}
return array;
}
我不明白为什么在 for 循环中的 if 部分只读取底部 if,例如,所有如上所示为 3 的倍数的数字将显示为“Fizz”,但只有它们,然后如果我放一个不同的如果在底部,它将是唯一显示的,我似乎无法弄清楚为什么。
解决方案
您仅使用将检查所有条件的 if 语句,如果满足最后一个条件(底部 if),则它将打印其输出。
因此,您将不得不为此使用 if...else 语句。
推荐阅读
- apache-spark - Pyspark 数据聚合与 Window 和索引上的滑动间隔
- javascript - 如何在 vue.js 中的组件之间切换?
- go - Golang basic slice logic
- reactjs - 当扩展程序或广告拦截器删除元素时显示占位符内容
- spring-boot - Springboot REST API 在 Jboss EAP.7.1.0 中部署时返回 404
- arrays - 卡在将“++X”与 C 中的另一个字符串进行比较
- erpnext - 如何在 Frappe/ERP 中正确删除自定义文档类型
- magento2 - Magento 仪表板页眉和页脚
- python - 如何在 html 中使用 {% if user.is_authenticated %} 来显示或删除内容
- java - 为什么 ChronoUnit.HOURS.between() 不工作?