当我输入6,8,16或者24的时候为什么不能正确输出
public class lala {
public static void main (String[] args){
int s;
Scanner in =new Scanner(System.in);
System.out.print("请输入一个正整数:");
s=in.nextInt();
new teee(s);
}
}
class teee{
int x=6,y=8;
public teee(int s){
System.out.print("结果:");
int i,j,m=-1;
for(i=0;i*x<s;i++){
for(j=0;j*y<s;j++){
if(s==i*x+j*y){
m=i+j;
System.out.println(m);
break;
}
}
if(m>0)break;
}
if(m<0){System.out.println(m);}
}
}
從代碼上看,姑且將題主的代碼看成求滿足方程式 s = 6i+8j,i的值最小的解,輸出i+j。
首先很直觀的可以確定,你要滿足i=0或j=0的情況的話,兩個循環的判斷條件應該設定為
不然就不能得出i=0或j=0的解,即整數倍解,也就是你說的6,16,24不準確的原因。
分割線:
關於論壇的活躍度跟論壇的問答品質感覺還是很難取捨的。
我個人一直覺得像「這種問題很簡單」,「你百度一下就有了」之類的只有批評沒有建議的回答或評論沒必要寫出來,純粹是給別人添堵。對新人來說,這種問題也許並不簡單,另外像這種很具體的程式碼邏輯問題百度是不會有的。
新人提問有不規範的地方,可以指出來,引導他採用正確的提問姿勢,既可以防止他們以後再犯這種錯,也不會打擊到新人的積極性,保證論壇的活躍度我們的論壇可以更友好。
建議題主參考:
https://segmentfault.com/tour
我也是初來乍到,不知道segmentfault有沒有新手灌水樂園,簡單的問題也許可以在這裡提,problem solved.
debug看,輸出-1有問題?都沒滿足for迴圈的條件,你想輸出if(s==ix+jy){