杭电acm-oj1002 A+B问题

注:题目请查看杭电ACM网站

不知道杭电acm编译通过的标准是什么,所以本题贴多种形式的代码。
由于数值大小问题,不能使用int类型,所以用String类型,也不用long

编译通过的:

import java.math.BigDecimal;
import java.util.Scanner;
public class Main {
    public static void main(String []args) {
        Scanner sc = new Scanner(System.in);
        int col = sc.nextInt();
        if (1 <= col && col <= 20) {
            int row = 2;
            String[][] jihe = new String[col][row];
            String value1 = null;
            String value2 = null;
            for (int i = 0; i < col; i++) {
                value1 = sc.next();
                value2 = sc.next();
               if(i!=(col-1)) {
                    System.out.println("Case"+" "+
                            (i+1)+":\r\n"+value1+" + "+value2+" = "+new BigDecimal(value1).add(new BigDecimal(value2))+"\r\n");
                }
                else {
                    System.out.println("Case"+" "+(i+1)
                            +":\r\n"+value1+" + "+value2+" = "+new BigDecimal(value1).add(new BigDecimal(value2)));
                }
            }
        }
    }
}

编译不通过,但是在IDE上运行没问题的:
形式1(这个形式和编译通过的区别在于输出的判断情况上。。。)

import java.math.BigDecimal;
import java.util.Scanner;
public class Main {
    public static void main(String []args) {
        Scanner sc = new Scanner(System.in);
        int col = sc.nextInt();
        if (1 <= col && col <= 20) {
            int row = 2;
            String[][] jihe = new String[col][row];
            String value1 = null;
            String value2 = null;
            for (int i = 0; i < col; i++) {
                value1 = sc.next();
                value2 = sc.next();
                //与编译通过的区别之处
                System.out.println("\r\n" + "Case " + (i + 1) + ":");
                System.out.println(value1 + " + " + value2 + " = " + new BigDecimal(value1).add(new BigDecimal(value2)) + "\r\n");
            }
        }
    }
}

形式2(这个形式考虑到输入错误时可重新输入)

import java.util.Scanner;
import java.math.BigDecimal;

public class Main2 {
    static boolean isTrue = false;
    public static void main(String []args){
        Scanner sc = new Scanner(System.in);
        int col = sc.nextInt();

        new Main2().saveValue(col);
        while(!isTrue){
            col = sc.nextInt();
            new Main2().saveValue(col);
        }
    }

    private void saveValue(int col){
        if(1 <= col && col<=20){
            Scanner sc = new Scanner(System.in);
            int row =2;
            String [][]jihe = new String[col][row];
            String value1 = null;
            String value2 = null;
            for(int m=0;m<col;m++) {
                value1 = sc.next();
                value2 = sc.next();
                for(int n=0;n<row-1;n++){
                    jihe[m][n]=value1;
                    jihe[m][++n]=value2;
                }
            }
            for(int i = 0; i<col; i++){
                for(int j=0; j<row-1;j++){
                    if(i!=(col-1)) {
                        System.out.println("Case"+" "+
                                (i+1)+":\r\n"+value1+" + "+value2+" = "+new BigDecimal(value1).add(new BigDecimal(value2))+"\r\n");
                    }
                    else {
                        System.out.println("Case"+" "+(i+1)
                                +":\r\n"+value1+" + "+value2+" = "+new BigDecimal(value1).add(new BigDecimal(value2)));
                    }
//                    System.out.println("Case "+i + ":");
//                    System.out.println(jihe[i][j] + " + " + jihe[i][++j] + " = " + new BigDecimal(jihe[i][--j]).add(new BigDecimal(jihe[i][++j])) + "\n");
                }
            }
            isTrue=true;
        }else{
            System.out.println("输入的计算数目不符合大于等于1或者小于等于20!请重新输入!");
            isTrue = false;
        }
    }
}

本题疑惑点,在于编译通过的限制条件是什么?!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值