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

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

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

Antworte allen(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循环里面的条件就好 《=
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage