杭电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;mfor(int n=0;n1;n++){
                    jihe[m][n]=value1;
                    jihe[m][++n]=value2;
                }
            }
            for(int i = 0; ifor(int j=0; j1;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;
        }
    }
}

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

你可能感兴趣的:(ACM练习)