[Java]一道貌似简单的题目:输入三个整数,打印出和.

/*题目:
输入为一行,包括了用空格分隔的三个整数 A、B、C
数据范围均在[-40,40]。输出“A+B+C”的结果。
*/
import java.util.Scanner;
public class AddThree{
    public static void main(String args[]){
        int a = 0;
        int b = 0;
        int c = 0;
        Scanner s = new Scanner(System.in);
        a = s.nextInt();
        b = s.nextInt();
        c = s.nextInt();
        if((a>40||a<-40)||(b>40||b<-40)||(b>40||b<-40)){
            System.out.println("某些数据取值超过范围!");
        }else{
            System.out.println(a+b+c);
        }
    }
}
/*
输入"10 20 30",输出"60". 此时基本符合题意.
Scanner等待输入时,可以输入多个,相互以空格分隔,以回车符结束.
但存在一个问题,当输入中的浮点数时,比如: 2 3.5 38
程序出现异常:java.util.InputMismatchException

所以,必须在赋值前进行检查,以下程序可以较好实现此功能:*/
import java.util.Scanner;
public class Demo{
    public static void main(String args[]){
        int a = 0;
        int b = 0;
        int c = 0;
        Scanner s = new Scanner(System.in);
        if(s.hasNextInt()){
			a=s.nextInt();
		}else{
			System.out.println("你输入的数据不是整数!");
			System.exit(0);
		}
        if(s.hasNextInt()){
			b=s.nextInt();
		}else{
			System.out.println("你输入的数据不是整数!");
			System.exit(0);
		}
		if(s.hasNextInt()){
			c=s.nextInt();
			//System.out.println(c);
		}else{
			System.out.println("你输入的数据不是整数!");
			System.exit(0);

		}
		if((a>40||a<-40)||(b>40||b<-40)||(b>40||b<-40)){
            System.out.println("某些数据取值超过范围!");
        }else{
            System.out.println(a+b+c);
        }
   }
}
//以上程序能简化吗?比如a,b,c用一个数组表示, 这样判断可以使用循环来写:
import java.util.Scanner;
public class AddThree{
    public static void main(String args[]){
        int a[] = new int[3];
        Scanner s = new Scanner(System.in);
        for(int i=0; i<3; i++){
	        if(s.hasNextInt()){
				a[i]=s.nextInt();
			}else{
				System.out.println("你输入的数据不是整数!");
				System.exit(0);
			}
        }
        
        int sum=0;
        for(int i=0; i<3; i++){
			if((a[i]>40||a[i]<-40)){
	            System.out.println("某些数据取值超过范围!");
	            System.exit(0);
	        }else{
	        	sum += a[i];
	        }
        }
        
        System.out.println(sum);
       
   }
}

//以上的程序中的判断块为什么不能这么写? 注意以下三条语句是错误的:
        (s.hasNextInt)?a=s.nextInt():System.out.println("你输入的数据不是整数!");
        (s.hasNextInt)?b=s.nextInt():System.out.println("你输入的数据不是整数!");
        (s.hasNextInt)?c=s.nextInt():System.out.println("你输入的数据不是整数!");
/*原因如下:
条件表达式不能取代一般的if语句,仅当if语句中内嵌的语句为赋值语句(且两个分支都给同一变量赋值)时才能代替if语句.
例如:if(a%2==0){printf("even/n");} else {printf("odd/n");}
   不能写成:(a%2==0)?printf("even/n"):printf("odd/n");
   但可以用下面语句代替: printf("%s/n",(a%2==0?"even":"odd");
     该语句的作用是:若 a 为偶数,输出 even;若 a 为奇数,输出odd.
*/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值