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

当我输入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 の状況を満たしたい場合は、2 つのループの判定条件を

に設定する必要があります。 リーリー

そうしないと、i=0 または j=0 の解、つまり整数倍の解を得ることができません。そのため、あなたが言及した 6、16、24 は不正確になります。


区切り線:
フォーラムの活動レベルとフォーラムでの Q&A の質のどちらかを選択するのは依然として困難です。
個人的には、「このような質問はとても簡単です」「百度で見つかります」などの、批判だけで提案のない回答や、メモする必要のないコメントは、常々感じていました。 、純粋に他人に迷惑をかけるためです。初心者にとって、この種の問題は簡単ではないかもしれません。また、Baidu にはそのような特定のコード ロジックの問題はありません。
新しい人が標準化されていない質問をした場合は、それを指摘し、正しい質問姿勢を身につけるように指導することができます。そうすることで、今後そのような間違いを犯さないようにするだけでなく、学生の熱意を弱めることもありません。新しい人を増やし、フォーラムの活動をよりフレンドリーにすることができます。

推奨トピック参照:
https://segmentfault.com/tour

私もここでは初心者です。segmentfault に初心者向けのウォーター パークがあるかどうかはわかりません。問題は解決しました。

いいねを押す +0
阿神

デバッグ、-1 の出力に何か問題がありますか?どちらも for ループの条件を満たしていないので、 if(s==ix+jy){

を出力したいとします。 リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート