zoukankan      html  css  js  c++  java
  • 2018/12/06 L1-025 正整数A+B Java

    这题的解法使用了一个非常巧妙的方法, 使用try报错来判断输入的值是否全为数字, 如果发生报错, 那么就表明无法通过Integer.parseInt(str.[0或1])将输入的值转换为整型值, 说明输入的值有字母, 判断成功.

    考验人的分析能力, 使用Scanner的代码:

    import java.util.Scanner;
     
    public class Main {
     
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String s = sc.nextLine();
            s = s.trim();
            String[] num = s.split("\s+");//以空格拆分字符串
            int flag1 = 1;
            int flag2 = 1;
            int a = 0, b = 0;
            
            if (num.length > 2) {    //如果拆分数组的长度大于2说明有多个空格
                flag2 = 0;
            }
            try {
                a = Integer.valueOf(num[0]);
                if (a < 1 || a > 1000) {
                    flag1 = 0;
                }
            } catch (Exception e) {
                flag1 = 0;
            }
     
            try {
                b = Integer.valueOf(num[num.length - 1]);
                if (b < 1 || b > 1000) {
                    flag2 = 0;
                }
            } catch (Exception e) {
                flag2 = 0;
            }
            
            
            if (flag1 == 0) {
                System.out.print("? + ");
            } else {
                System.out.print(a + " + ");
            }
     
            if (flag2 == 0) {
                System.out.print("? = ");
            } else {
                System.out.print(b + " = ");
            }
     
            if (flag1 == 0 || flag2 == 0) {
                System.out.println("?");
            } else {
                System.out.println(a + b);
            }
        }
    }

     我是用BufferedReader和InputStreamReader的方法写的答案:

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    
    public class Main2 {
    
        public static void main(String[] args) throws Exception{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String[] str = br.readLine().split(" ");
            int flag1 = 1;
            int flag2 = 1;
            int a = 0;
            int b = 0; 
            
            try {
                a=Integer.parseInt(str[0]);
                if( a < 1 || a > 1000 ) {
                    flag1 = 0;
                }
            } catch( Exception e) {
                flag1 = 0;  // 如果a无法改为整数, 就表明输入的第一个不是数字, try...catch的方式成功的实现了判断输入的字符串是否全是数字.
            }
            try {
                b=Integer.parseInt(str[1]);
                if( b < 1 || b > 1000 ) {
                    flag2 = 0;
                }
            } catch( Exception e) {
                flag2 = 0;  // 如果b无法改为整数, 就表明输入的第二个不是数字, try...catch的方式成功的实现了判断输入的字符串是否全是数字.
            }
            
            if (str.length > 2) {
                // 说明有超过两个数被输入.
                flag2 = 0;  // 设置第二个数为不合法输入.
            }
            
            if (flag1 == 0) {
                System.out.print("? + ");
            } else {
                System.out.print(a + " + ");
            }
     
            if (flag2 == 0) {
                System.out.print("? = ");
            } else {
                System.out.print(b + " = ");
            }
     
            if (flag1 == 0 || flag2 == 0) {
                System.out.println("?");
            } else {
                System.out.println(a + b);
            }
            
        }
    
    }
  • 相关阅读:
    mysql触发器实时检测一条语句进行备份删除
    ORA-12560: TNS: 协议适配器错误 windows
    DG:windows密码文件
    vim already exists!
    k8s 集群升级
    部署 k8s 备份工具 velero
    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
    lens 添加 k8s 集群
    redis系列
    s3c2440裸机-I2c编程-3.i2c中断服务程序
  • 原文地址:https://www.cnblogs.com/huangZ-H/p/10077304.html
Copyright © 2011-2022 走看看