java - 一道算法题,求指教;
大家讲道理
大家讲道理 2017-04-18 09:59:37
0
2
356

当我输入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);}
        
    }
    
}
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(2)
Ty80

從代碼上看,姑且將題主的代碼看成求滿足方程式 s = 6i+8j,i的值最小的解,輸出i+j。
首先很直觀的可以確定,你要滿足i=0或j=0的情況的話,兩個循環的判斷條件應該設定為

i*x<=s 跟 j*y<=s

不然就不能得出i=0或j=0的解,即整數倍解,也就是你說的6,16,24不準確的原因。


分割線:
關於論壇的活躍度跟論壇的問答品質感覺還是很難取捨的。
我個人一直覺得像「這種問題很簡單」,「你百度一下就有了」之類的只有批評沒有建議的回答或評論沒必要寫出來,純粹是給別人添堵。對新人來說,這種問題也許並不簡單,另外像這種很具體的程式碼邏輯問題百度是不會有的。
新人提問有不規範的地方,可以指出來,引導他採用正確的提問姿勢,既可以防止他們以後再犯這種錯,也不會打擊到新人的積極性,保證論壇的活躍度我們的論壇可以更友好。

建議題主參考:
https://segmentfault.com/tour

我也是初來乍到,不知道segmentfault有沒有新手灌水樂園,簡單的問題也許可以在這裡提,problem solved.

阿神

debug看,輸出-1有問題?都沒滿足for迴圈的條件,你想輸出if(s==ix+jy){

                m=i+j;
                System.out.println(m);
                break;
            }    
          修改你for循环里面的条件就好 《=
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板