网站建设壹金手指六六1,微信官网网站模板下载不了,房地产网,wordpress分销商城1. AB问题I
时间限制#xff1a;2.000S 空间限制#xff1a;32MB
题目描述
你的任务是计算ab。
输入描述
输入包含一系列的a和b对#xff0c;通过空格隔开。一对a和b占一行。
输出描述
对于输入的每对a和b#xff0c;你需要依次输出a、b的和。
如对于输入中的第二…1. AB问题I
时间限制2.000S 空间限制32MB
题目描述
你的任务是计算ab。
输入描述
输入包含一系列的a和b对通过空格隔开。一对a和b占一行。
输出描述
对于输入的每对a和b你需要依次输出a、b的和。
如对于输入中的第二对a和b在输出中它们的和应该也在第二行。
输入示例
3 4
11 40
输出示例
7
51 1. AB问题I 前言 本节课你将学到的内容 变量定义基本数据类型面向对象类的定义、属性和方法new关键字private和publicstaticimport关键字输入Scanner类的使用输出语句while控制多次输入 类和面向对象 你有对象吗没有new一个啊。 都说Java是一门面向对象的语言, 而且是“万物皆对象”那该怎么理解这句话呢 这里的“对象”实际上是对现实世界中所存在的事物的一种抽象举个例子你在计算机世界中怎么表示“人”这个概念呢 我们可以将之抽象为一个类Person, 并具有一些“属性”和“方法”。 “属性”表示Person类所具有的特征比如姓名、年龄、性别通过这些特征我们可以描述一个“人”的基本状态。“方法”表示Person类的行为和功能比如吃饭、睡觉、行走通过这些动作我们可以描述一个“人”的动态行为。 比如下面的“伪代码”表示Person类的定义, 它包括姓名、性别、年龄和吃饭的方法。 Person {// 姓名、性别、年龄等属性name;gender;age;// 吃饭的方法eat() {}// 行走的方法walk() {}
}这样在计算机世界一个“人”的概念就建立起来了但这里的Person类只是个“模具”空有概念而无法表示具体的某一个人只有创造一个类的实例也就是我们说的对象比如张三18 男, 李明、20男才能真正的使用而创建Person实例需要使用new关键字。 // new Person()创建一个实例
// 将这个实例起名为xiaoming
// Person xiaoming表示这是一个Person的实例xiaoming属于Person这种类型
Person xiaoming new Person();现在你是不是能对面向对象有一些初步的理解了呢 简而言之“类”是现实世界中的实体在计算机世界中的抽象概念类可以看作是对象的模板它定义了对象的结构和行为方式而对象是“类”的实现。 程序基本结构 在了解了Java类和对象的基本概念之后我们开始尝试编写一些简单的java代码如果你之前没有接触过java甚至是没有接触过编程语言可能很难去理解为什么要这样写但是没关系编程最开始往往是从“死记硬背”开始的我们暂时只需要知道这是java程序必须有的结构就可以后面我们会进行详细的解释从而帮助你更好的理解它。 我们一般使用代码编辑器来书写代码书写时我们会创建一个.java文件比如Main.java, 而在任何一个Java程序中都必须包括下面的基本结构 public class Main {public static void main(String[] args) {}
}一共有两行代码我们一行一行的解释 // 使用class关键字定义一个public(公开)类类的名称是Main
public class Main {}之前我们提到了我们创建了一个Main.java文件在这个文件中必须存在一个与该文件同名的类类要使用class这个关键字里定义Main是类的名称 类的名称通常以大写字母开头 public表示这个类是公开的这意味着你可以在任何其他类中访问。 此外类中还必须包括一个方法main, Java程序总是从main方法开始执行表示这是Java程序的入口, 下面的代码是main方法的固定写法。 public static void main(String[] args) {}public是一个访问修饰符 除了可以修饰class外也可以修饰方法表示该方法是公开的对于main来说它必须是public的。 关键字static是另一个修饰符它表示静态方法后面我们会讲解方法的类型目前我们只需要知道Java入口程序规定的方法必须是静态方法。 void 表示该方法不返回任何值。 main是方法的名称作为程序的入口点而且入口的名称方法名必须为main String[] args这是 main 方法的参数。 方法的组成 我们提到了一个类中会包含属性和方法也通过程序基本结构这两行代码知道了main方法的写法那方法的通用写法是怎样的呢 实际上一个方法主要包含四个部分 返回类型方法名形参列表方法体 ReturnType methodName(/* 参数列表 */) {// 方法体
}返回类型ReturnType 定义一个方法时我们首先要在方法名之前放置一个关键字表示该方法的返回类型这个关键字代表的含义是方法执行完毕会返回什么类型的值。main 方法通常不返回结果所以用void来修饰因为它的主要目的是启动程序而不是返回值。 函数名methodType 一个类可以有很多个方法(比如人的吃饭、睡觉)每个方法有不同的作用为了区分这些方法我们要给不同的方法起不同的方法名称而且方法命名是有规范的而这里由于是主方法所以方法的名称为main且不可更改。 形参列表 方法名之后的括号内填充的就是形参列表它定义了方法在被调用时传递给方法的信息参数可以有多个不同参数之间用逗号分隔。String[] args是 main 方法的参数它表示的含义是一个字符串数组。这里也是固定写法 方法体 从左花括号{开始, 到右括号}结束这一部分就是方法体方法体中可以有很多行代码方法体中代码的执行产生不同的结果。 经过了上面的解释之后你或许对方法有了一些理解也或许没有但没关系我们可以把方法想象成一个具有很多功能的盒子这个盒子具有洗衣机、榨汁机的功能方法的返回类型就代表盒子的种类A类型就代表这是一个洗衣机返回的结果是衣服B类型代表这是一个榨汁机返回的结果是果汁方法是你给这个盒子起的昵称它可以按照规则去定义只不过如果是main方法它的名称就不可更改了方法的形参列表就是我们往盒子扔进去的东西我们可以把衣服或者水果放进去而方法体是我们放进去的东西要经历的处理过程经过方法的处理之后返回的内容就是我们想要的结果。 让我们再重新认识一下刚才写的代码吧 // public 和 static 是修饰符分别表示公开方法和静态方法
// void 表示方法的返回类型为空
// main是方法的名称不可更改
// String[] args表示方法的参数
public static void main(String[] args) {}输入输出 现在我们开始尝试正式进入本题了题目要求我们输入一系列的 a 和 b, 并计算 a 和 b 的和计算和很简单只需要将a b即可但我们首先要解决的问题实际上是如何从键盘上读取我们输入的数。 幸运的是Java已经帮助我们提供了一些操作帮助我们进行输入和输出操作。 在Java中你可以使用标准输入System.in进行输入操作使用标准输出System.out来进行输出操作此外还需要使用到 Scanner 类Java标准库中的一个类。 System.in 是一个标准的输入流它允许你从控制台键盘获取用户输入的数据。Scanner 是 Java 中的一个类它位于 java.util 包中它提供了一种简便的方式来处理输入数据。 它的使用代码是这样的 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);sc.close(); // 关闭Scanner对象}
}在使用Scanner时需要从Java的工具库util中引入引入操作需要使用到import关键字 // 引入Scanner
import java.util.Scanner;在之前我们讲述了类和对象想要将类实例化也就是创造一个对象实例需要使用new关键字, 实例化的时候我们需要用一个“名称”变量来代表这个对象比如创造Person实例时的“张三、李四”就是这个对象的名字名称前面要加上类名表示变量是这种类型。 // new Scanner(Symtem.in)创建了一个 Scanner 对象
// 给对象起了个名称sc, sc前面的Scanner表示sc是Scaner
Scanner sc new Scanner(System.in);变量 我们已经知道了可以使用标准输入System.in进行输入操作可是我们还有一个问题需要解决那就是系统怎么认识和标识我们输入的数字呢比如说我们想要输入两个数字100、100系统如果使用100来标识100那另外一个100应该怎么标识呢 所以我们就需要在系统内部使用某样东西来指代和标识输入的内容比如x 100; y 100, 这里的x, y 在数学中被称为变量在编程中也被称为变量用来指代内容。 不过在数学中有整数、小数之分那计算机在存储的时候也应该知道我们输入的x是一个什么类型的数字这里我们输入的是整数也就是前面使用的int类型。 所以我们首先需要定义两个变量a,b代码这么写 int a; // 定义一个变量名称为a, 用于接收一个整数
int b; // 定义一个变量名称为b, 用于接收一个整数为了简略我们可以将代码写在一行然后将类型略去变量中间用逗号分隔。 int a, b;在定义变量的时候也可以给他一个初始值如果不写初始化值的话系统会帮助我们设置一个默认值0。 int a 1; // 定义一个整数类型变量并赋予初始值1程序编写 现在我们就可以使用一个变量来保存使用Scanner读取的数字了Scanner使用nextInt()方法读取并返回下一个整数我们使用该方法读取两个整数并存放在变量a和变量b中。 int a sc.nextInt(); // 读取下一个整数并将之赋值给变量a
int b sc.nextInt(); // 读取下一个整数并将之赋值给变量b读取完两个整数的输入之后我们需要计算a b的值并将其输出, 输出语句如下 System.out.println(ab); // System.out.println()用于将括号内的内容输出到屏幕上。import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int a sc.nextInt();int b sc.nextInt();System.out.println(ab);sc.close(); }
}但是上面的代码只能满足一次输入输出也就是说只能输入输入一组a和b, 但是题目要求输入包含一系列的a和b,难道有一千组数据我们需要书写一千行上面的代码嘛更糟糕的是我们并不知道一系列数据到底是多少组数据 这个时候我们可以使用“循环结构”while, while循环表示只要给定的条件是真的就反复执行这一段代码直到条件变假为止。 下节课中我们会对while进行详细的解释这里只需要明白代码的基本意思即可。 while(条件) {// 循环代码块
}在每次循环中会判断条件的真假。如果条件为真循环体内的代码块会被执行。然后循环会再次检查条件并根据条件的真假决定是否继续执行循环体。 while循环可以这样理解假设条件为“我还没有学会Java” 只要这个条件还是真的判断条件的真假我就会每天坚持努力学习循环体如果我已经学会了Java, 我才会停止学习退出这个循环。 所以下面的代码就表示持续输入a 和 b直到判断没有下一个输入时才会结束。 // 只要输入中还有下一个整数就会继续执行循环内部的代码
while(sc.hasNextInt()) {int a sc.nextInt();int b sc.nextInt();System.out.println(ab);
}那么完整代码如下 // 引入Scanner
import java.util.Scanner;public class Main {public static void main(String[] args) {// 创造一个Scanner对象Scanner sc new Scanner(System.in);// 判断是否还有下一个数据while(sc.hasNextInt()) {// 读取两个整数并将它们存储在变量 a和 b中int a sc.nextInt();int b sc.nextInt();// 输出a和b的值System.out.println(ab);}sc.close(); // 关闭Scanner对象}
}延伸 除了int类型之外Java语言还有一些其他的数据类型用于存储整数、浮点数、字符和布尔值这些原始数据而这些基本数据类型就是构建一个对象的基础。 整数类型Integer Types byte在计算机存储中占用1个 字节表示的范围 -128 到 127。short在计算机存储中中占用2个字节范围 -32,768 到 32,767。int4 字节范围约为 -231到231-1。long8 字节范围约为-263到263-1。 byte score 98;
short age 130;
int count 100000;
long gdp 10000000000L;浮点数类型用于表示包含小数部分的数字 float单精度浮点数占用4个字节通常用于存储较小的浮点数。double双精度浮点数占用8个字节通常用于存储较大或更精确的浮点数。 float floatValue 3.14159f; // 使用 f 后缀表示 float
double price 2.99; // 默认是double类型字符类型char: 用于存储一个字符(用单引号括起来表示)比如字符A以及字符1。 char grade A;
char ch2 1;布尔类型Boolean Type) boolean表示布尔值只有两个取值true (真)和 false假) boolean flag true;因为有不同的数据类型在实际应用中你可以根据需要使用不同的 Scanner 方法来读取不同类型的数据。 next()读取下一个字符串。nextInt()读取下一个整数。nextDouble()读取下一个双精度浮点数。nextLine()读取下一行文本。hasNext()判断是否还有下一个输入项。如果有返回 true否则返回 false。hasNextInt()判断是否还有下一个整数输入项。hasNextDouble()检查是否还有下一个双精度浮点数输入项。 对于这些方法目前大家只需要留有一个印象即可我们后面会通过练习接触到这些方法。 访问修饰符 在程序基本结构中我们介绍了用public来修饰类, 这里的public是一个访问修饰符可以用来修饰类、属性或者方法表示被修饰的成员对于其他所有类都是可见的。 public class A {public int age;
}public class B {// 可以在B类中直接使用age
}除了public外还有private修饰符和一些其他的修饰符private表示被修饰的成员只能在包含它的类中被访问, 其他类无法访问类中的 private 成员。这通常用于隐藏类的内部细节。 public class A {private int age;
}
public class B {// 无法在 B 类中直接使用age
}访问修饰符的使用取决于设计目标和需求。通常应该尽量将成员定义为 private以实现数据隐藏和封装只在需要时提供公共接口。 总结 本节课我们知悉了类和对象的基本概念并通过a和b的多组输入了解了java的基础结构、变量、输入输出、while循环等基础语法。 java代码实现 import java.util.Scanner;
public class Main{public static void main(String[] args){Scanner scnew Scanner(System.in);while(sc.hasNextInt()){int asc.nextInt();int bsc.nextInt();int sum(ab);System.out.println(sum);}}
}