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

当我输入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=0 또는 j=0의 해, 즉 정수 배수 해를 얻을 수 없습니다. 이것이 바로 말씀하신 6, 16, 24가 부정확한 이유입니다.


구분선:
포럼의 활동 수준과 포럼 Q&A의 질 사이에서 선택하는 것은 여전히 ​​어렵습니다.
개인적으로는 "이런 질문은 참 간단하다", "바이두에서 찾을 수 있다" 등의 답변에는 비판만 있을 뿐 제안은 없고, 적을 필요가 없는 댓글이 있다는 느낌을 늘 받아왔습니다. , 순전히 다른 사람에게 문제를 일으키기 위한 것입니다. 초보자에게는 이런 종류의 문제가 간단하지 않을 수 있습니다. 또한 Baidu에는 이러한 특정 코드 논리 문제가 없습니다.
새로운 사람들이 표준화되지 않은 질문을 할 경우 이를 지적하고 올바른 질문 자세를 취할 수 있도록 지도하면 앞으로 그러한 실수를 예방할 수 있을 뿐만 아니라 열정을 꺾지 않을 것입니다. 새로운 사람들과 포럼의 활동을 보장하면 더욱 친근해질 수 있습니다.

추천 주제 참조:
https://segmentfault.com/tour

저도 이곳에 처음 왔습니다. Segmentfault에 초보자를 위한 워터파크가 있는지 모르겠습니다. 여기에 간단한 질문을 해도 문제가 해결됩니다.

阿神

디버그, -1 출력에 문제가 있나요? for 루프의 어떤 조건도 충족되지 않습니다. if(s==ix+jy){

를 출력하려고 합니다. 으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿