java - pat的一道题,有2个测试点一直无法通过
PHP中文网
PHP中文网 2017-04-18 10:16:07
0
3
440

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中文网

认证高级PHP讲师

membalas semua(3)
PHPzhong

Penyoal tidak memahami maksud soalan dengan jelas. Nombor negatif meningkat sebanyak 0.5 kali ganda dan mesti didarab dengan 1.5 nombor genap bertambah dengan 1 dan mesti didarab dengan 2.
fan2 = a_2/(s. length()-1)* (ou+fu); // Adakah anda mendarabkan faktor perkadaran dengan betul?
Terdapat juga nombor positif dan nombor genap Saya tidak tahu bagaimana anda melepasi kes lain

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

Selain itu, seperti yang @zjupure katakan, saya merasakan pemahaman penyoal tentang soalan itu berat sebelah, dan saya juga memahaminya mengikut @zjupure.

Tetapi yang peliknya kod subjek juga melepasi 66.67% ujian...

Selain itu, sesetengah ujian mungkin tidak dijalankan kerana syarat sempadan dan pengesahan parameter input tidak dinilai Contohnya, input bukan nombor atau nilai seperti +0, -0. Masuk (walaupun saya berasa buruk menulis kod ini sebagai soalan algoritma, tetapi untuk lulus ujian...).

刘奇

Mata tambahan: Jika digit pertama ialah tanda negatif, maka anda perlu bermula dari digit kedua untuk mengira sama ada 2 dan bilangan digit

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan