Maison  >  Questions et réponses  >  le corps du texte

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中文网2741 Il y a quelques jours384

répondre à tous(3)je répondrai

  • PHPz

    PHPz2017-04-18 10:18:07

    L'interlocuteur n'a pas clairement compris le sens de la question. Les nombres négatifs augmentent de 0,5 fois et doivent être multipliés par 1,5. Les nombres pairs augmentent de 1 et doivent être multipliés par 2.
    fan2 = a_2/(s. length()-1)* (ou+fu); // Avez-vous correctement multiplié le facteur de proportion ?
    Il y a aussi des chiffres positifs et des chiffres pairs. Je ne sais pas comment vous avez passé les autres cas

    répondre
    0
  • 伊谢尔伦

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

    // 这一行代码是有问题的,s.charAt()返回的是一个char值,而不是int值,这里会得到char对应的ascii值转换成int值再进行运算
    if(s.charAt(s.length()-1)%2==0) {

    De plus, comme @zjupure l'a dit, j'ai l'impression que la compréhension de la question par celui qui pose la question est biaisée, et je l'ai également compris selon @zjupure.

    Mais ce qui est étrange, c'est que le code du questionneur a également réussi 66,67% des tests...

    De plus, certains tests peuvent ne pas s'exécuter car les conditions aux limites et la vérification des paramètres d'entrée ne sont pas jugées. Par exemple, l'entrée n'est pas un nombre ou une valeur telle que +0, -0. Le sujet peut également les ajouter. Entrez (même si je me sens mal d'écrire ces codes sous forme de questions algorithmiques, mais pour réussir le test...).

    répondre
    0
  • 怪我咯

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

    Point supplémentaire : Si le premier chiffre est un signe négatif, alors vous devez partir du deuxième chiffre pour calculer s'il s'agit de 2 et le nombre de chiffres

    répondre
    0
  • Annulerrépondre