찾다

 >  Q&A  >  본문

java - pat的一道题,有2个测试点一直无法通过

pat的一道题

提交之后有两个测试点过不去

我的代码如下

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.next();
        double fu = 0,ou = 0,a_2 = 0;
        int i = 0;
        if(s.charAt(0)==45){
            //如果是负数
            fu = 0.5;
        }
        while(i<s.length()){
            //判断2 的个数
            if((s.charAt(i)-48)==2){
                a_2++;
            }
            i++;    
        }
        if(s.charAt(s.length()-1)%2==0){
            //如果是偶数
            ou = 1.0;
        }
        double fan2 = 0;
        if(fu==0){//正数
            fan2 = a_2/((double)(s.length()));
                    
        }else{//负数        
            fan2 = a_2/(s.length()-1)*(ou+fu);
        }
        //测试2的个数/总字符串长度的值
        System.out.println(fan2);
        System.out.printf("%.2f%%",fan2*2*100);
    }
}

请问这是哪点没有通过呢?

PHP中文网PHP中文网2812일 전450

모든 응답(3)나는 대답할 것이다

  • PHPz

    PHPz2017-04-18 10:18:07

    질문자는 질문의 의미를 명확하게 이해하지 못했습니다. 음수는 0.5배 증가하고 1.5를 곱해야 합니다. 짝수는 1 증가하고 2를 곱해야 합니다.
    fan2 = a_2/(s. length()-1)* (ou+fu); // 비율 계수를 올바르게 곱했습니까?
    양수도 있고 짝수도 있는데 다른 경우는 어떻게 통과하셨는지 모르겠네요

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:18:07

    으아아아

    그리고 @zjupure 님 말씀대로 질문자님의 질문 이해가 편향된 것 같은 느낌이 드는데, @zjupure 님 말씀대로 저도 이해했습니다.

    그런데 이상한 점은 질문자의 코드도 66.67%의 테스트를 통과했다는 것입니다...

    또한, 일부 테스트는 경계 조건 및 입력 매개변수 검증이 판단되지 않기 때문에 실행되지 않을 수 있습니다. 예를 들어 입력이 숫자가 아니거나, +0, -0과 같은 값도 피험자가 추가할 수 있습니다. 들어가십시오 (이 코드를 알고리즘 질문으로 작성하는 것은 기분이 좋지 않지만 테스트를 통과하려면 ...).

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-18 10:18:07

    추가 사항: 첫 번째 숫자가 음수 부호인 경우 두 번째 숫자부터 시작하여 2인지 자릿수인지 계산해야 합니다.

    회신하다
    0
  • 취소회신하다