刷题DAY5
大小写转换
题目:从键盘输入一个大写的字母,要求改写小写字母输出
输入:输入一个大写的字母
输出:输出相对应的小写字母
输入:A
输出:a
import java.util.Scanner; public class 大小写转换 { public static void main(String[] args) {Scanner scanner = new Scanner(System.in); // 创建Scanner对象 System.out.println("请输入一个大写字母:");String input = scanner.next(); // 接收用户输入 if (input.length() == 1 && Character.isUpperCase(input.charAt(0))) {char lowerCaseLetter = Character.toLowerCase(input.charAt(0));System.out.println("小写字母为: " + lowerCaseLetter);} else {System.out.println("输入不是单个大写字母!");} scanner.close(); // 关闭scanner} }
知识点
1.input
input 即输入流(以电脑为参考系,从外部向程序或电脑中输入一个数据,称之为输入流) 相当于输入一样
而output就是输出流(以电脑/程序向外输出一个数据)
input和output都是io流
2.Character类
是一个包装类,用于封装一个基本数据类型char(16位)的值。它提供一些静态方法(执行特定功能的代码块)来操作字符
关于character类的静态方法:
-
isLetter(char c):检查字符是否是字母。
-
isDigit(char c):检查字符是否是数字。
-
isWhitespace(char c):检查字符是否为空格、制表符或换行符。
-
isUpperCase(char c):检查字符是否为大写字母。
-
isLowerCase(char c):检查字符是否为小写字母。
-
toUpperCase(char c):将字符转换为大写字母。
-
toLowerCase(char c):将字符转换为小写字母。
3.静态方法
执行特定功能的代码块。 作用就是通过定义方法,可以解决代码的冗余,减少重复的代码。
基本语法:访问修饰符 static 返回值类型 方法名(参数列表){ ...代码块/方法体...}
例如: public static void main(String[] args){}
注:1. 静态方法是在类名中编写的而方法与方法之间是平级的所以方法不能在方法之间写
方法的调用:在Java中方法必须要用调用才能使用而静态方法的调用是用类名(多个静态方法在同一个类中,可以不适用类名直接调用)
整数求和
题目:求两个整数之和
输入:数据只包括两个整数A和B
输出:两个整数的和
输入:1
2
输出:3
import java.io.*; import java.util.*; public class 整数求和 { public static void main(String args[]) throws Exception {Scanner cin=new Scanner(System.in);int a=cin.nextInt(),b=cin.nextInt();System.out.println(a+b);} }
知识点:
1.package(包)
包机制则相当于电脑硬盘中的文件夹,因不同的用途不同的功能进行分类,便于查找管理。 包的命名格式:公司域名倒序+项目名oa+模块名+功能名比如://eg:com.bjpowernode.oa.user.service; //com bj… oa user service 包必须全部小写而且包名也是标识符,必须遵顼标识符命名规范 。 一个包对应一个目录
2.import
作用:引入所需要的包(相当于这个文件需要运用到其他的文件里面的东西,而这个操作需要import) 命名格式:格式 import 类名或者包名.(表示全部) jav.lang.是Java中的语言包,是Java中的核心类,不需要手动引入,系统自动引入。import语句需要编写在package语句之下,class语句之上。import com.表示com包下的所有类,com.Date表示导入com包下的Date类。 不在同一个包下或者不是java.lang文件夹下,需要手动导入
3.scanner 类
是用于获取用户输入的工具类
基本语法:Scanner s = new Scanner (System.in) //创建了一个Scanner对象,Scanner为类名,s为对象名
在scanner两个中重要的方法:
-
以 hasNext 开头的方法:用于检查输入源中是否还有下一个标记可用,常用的有:
-
hasNext():如果输入源中还有下一个标记(非空格字符),返回 true。
-
hasNextLine():如果输入源中还有下一行(非空行),返回 true。
-
hasNextInt():如果输入源中还有下一个整数,返回 true。
-
hasNextDouble():如果输入源中还有下一个浮点数,返回 true。
-
hasNextBoolean():如果输入源中还有下一个布尔值,返回 true。
-
-
以 next 开头的方法:用于从输入源中获取下一个标记并返回相应的数据类型,常用的有:
-
next():从输入源中获取并返回一个字符串,默认以空格为分隔符,以回车 Enter 为结束符,回车 Enter 后的内容则放入缓冲区。
-
nextLine():从输入源中获取并返回一行字符串(以换行符为分隔符)。
-
nextInt():从输入源中获取并返回一个整数。
-
nextDouble():从输入源中获取并返回一个浮点数。
-
nextBoolean():从输入源中获取并返回一个布尔值(“true” 或 “false”)。
-
注:next()和nextline()的区别
class Solution {public static void main(String[] args) {Scanner scanner = new Scanner(System.in); // next() && nextLine()System.out.println("请输入一个字符串 nextLine():");String str1 = scanner.nextLine();System.out.println(str1); System.out.println("请输入一个字符串 next():");String str2 = scanner.next();System.out.println(str2);} }
请输入一个字符串 nextLine():Hello World nextLine() 的读取结果为: Hello World 请输入一个字符串 next():Hello World next() 的读取结果为: Hello
需要注意的是在使用 nextInt() 方法读取整数后,缓冲区仍然会包含一个换行符 \n。这是因为 nextInt() 只读取了整数部分,而没有读取换行符。当接下来调用 nextLine() 方法时,它会读取缓冲区中的剩余部分,即仅包含换行符的部分。因此,为了确保 nextLine() 方法可以读取到用户输入的整行字符串,我们需要在调用 nextLine() 方法之前清除缓冲区中的换行符。 通过调用 scanner.nextLine() 但不将其结果保存到变量中,实际上是表示我们只想要从缓冲区中读取并丢弃这个换行符。这样,接下来调用 nextLine() 方法时,它将读取到用户输入行的内容,并将其保存到字符串 input 中,而不会被之前的换行符干扰。确保清除缓冲区中的换行符是一种常见的做法,以避免由于换行符残留而导致不正确的输入或跳过输入的情况发生。 如果在上面代码中没有 scanner.nextLine() 这行语句的话,那么会出现如下错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)at java.lang.Integer.parseInt(Integer.java:592)at java.lang.Integer.parseInt(Integer.java:615)at Solution.main(Solution.java:15)