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

 烟台中海地产有限公司往 发布于 2022-10-27 19:55

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

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

3 个回答
  • 补充一点:如果第一位是负号,那么需要从第二位开始计算是否为2,以及数字的位数

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

    另外,正如@zjupure 所说,感觉题主对题目理解有偏差,我也是按@zjupure 理解的。

    但奇怪的是,这样题主的代码也跑通了66.67%的测试……

    另外,有些测试跑不通也有可能是边界条件和输入参数校验没有做判断导致的,例如输入的不是一个数字,或者像+0, -0这样的数值,题主可以把这些也加进去(虽然我觉得作为算法题写这些代码很操蛋,但为了跑通测试……)。

    2022-10-29 02:37 回答
  • 题主没看清题意,负数是增加0.5倍,要乘以1.5,偶数是增加1倍,要乘以2.
    fan2 = a_2/(s.length()-1)*(ou+fu); // 你这比例因子乘对了吗?
    还有正数也可以是偶数,都不知道你其他case是怎么通过的

    2022-10-29 02:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有