検索

ホームページ  >  に質問  >  本文

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日前449

全員に返信(3)返信します

  • PHPz

    PHPz2017-04-18 10:18:07

    質問者は質問の意味を明確に理解していませんでした。負の数は 0.5 倍になり、1.5 倍されます。
    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 桁かどうかと数値の桁数を計算するには 2 桁目から開始する必要があります

    返事
    0
  • キャンセル返事