Java 基础——Scanner 类_java scanner(1)

next() 的读取结果为:
Hello


### 2.3.读取大小已知的一维数组


描述:第一行输入是以一个整数 n,表示数组 nums 的长度,第 2 行输入 n 个整数,整数之间用空格分隔。请将这些整数保存到数组 nums 中,然后将其打印出来。例如:



7
4 9 0 -1 6 8 9


(1)使用 `nextInt()` 逐个读取:



class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//数组的长度
int n = scanner.nextInt();
int[] nums = new int[n];
//数组中的 n 个数
for (int i = 0; i < n; i++) {
nums[i] = scanner.nextInt();
}
System.out.println(“数组 nums 的元素为:”);
for (int num : nums) {
System.out.print(num + " ");
}
scanner.close();
}
}


结果如下:



7
4 9 0 -1 6 8 9
数组 nums 的元素为:
4 9 0 -1 6 8 9


(2)使用 `nextLine()` 先全部读取,然后逐个解读:



class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
//清除缓冲区中的换行符
scanner.nextLine();
int[] nums = new int[n];
String input = scanner.nextLine();
//以一个或者多个空格为分隔符
String[] numStrings = input.split(“\s+”);
for (int i = 0; i < n; i++) {
nums[i] = Integer.parseInt(numStrings[i]);
}
System.out.println(“数组 nums 的元素为:”);
for (int num : nums) {
System.out.print(num + " ");
}
scanner.close();
}
}


注意事项:


* 需要注意的是在使用 `nextInt()` 方法读取整数后,缓冲区仍然会包含一个换行符 `\n`。这是因为 `nextInt()` 只读取了整数部分,而没有读取换行符。当接下来调用 `nextLine()` 方法时,它会读取缓冲区中的剩余部分,即仅包含换行符的部分。因此,为了确保 `nextLine()` 方法可以读取到用户输入的整行字符串,我们需要在调用 `nextLine()` 方法之前清除缓冲区中的换行符。
* 通过调用 `scanner.nextLine()` 但不将其结果保存到变量中,实际上是表示我们只想要从缓冲区中读取并丢弃这个换行符。这样,接下来调用 `nextLine()` 方法时,它将读取到用户输入行的内容,并将其保存到字符串 `input` 中,而不会被之前的换行符干扰。**确保清除缓冲区中的换行符是一种常见的做法,以避免由于换行符残留而导致不正确的输入或跳过输入的情况发生。**
* 如果在上面代码中没有 `scanner.nextLine()` 这行语句的话,那么会出现如下错误:



7
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)


### 2.4.读取大小未知的一维数组


描述:输入若干个整数,整数之间用空格分隔。请将这些整数保存到数组 nums 中,然后将其打印出来。例如:



1 12 3 4 5 6


(1)使用 `nextInt()` 逐个读取:



class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List nums = new ArrayList<>();
while (scanner.hasNextInt()) {
nums.add(scanner.nextInt());
}
System.out.println(“数组 nums 的元素为:”);
for (int num : nums) {
System.out.print(num + " ");
}
scanner.close();
}
}


注意事项:


* 如果在控制台手动输入若干个整数,期望手动停止输入后,程序结束读取整数,可以使用其他方式来指示结束输入的条件。一种常见的方式是通过输入特定的字符或字符串来表示结束;
* 由于是逐个读取,因此事先不知道数组的长度,所以上面代码中使用 list 来存储;


(2)使用 `nextLine()` 先全部读取,然后逐个解读:



class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
input = input.trim();
String[] numStrings = input.split(“\s+”);
int[] nums = new int[numStrings.length];
for (int i = 0; i < numStrings.length; i++) {
nums[i] = Integer.parseInt(numStrings[i]);
}
System.out.println(“\n数组 nums 的元素为:”);
for (int num : nums) {
System.out.print(num + " ");
}
scanner.close();
}
}


结果如下:



1 12 3 4 5 6

数组 nums 的元素为:
1 12 3 4 5 6


### 2.5.读取长度大小已知的二维数组


描述:第一行输入是两个整数 m 和 n,中间用空格分隔,后面跟随 m 行,每行都有 n 个整数,整数之间用空格分隔。例如:



3 4
1 8 7 3
2 3 4 5
4 5 6 7


(1)使用 `next()` 读取:



class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 读取整数 m 作为二维数组的长度
int m = scanner.nextInt();
int n = scanner.nextInt();
scanner.nextLine(); // 读取换行符
//创建二维数组 nums
int[][] nums = new int[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
nums[i][j] = scanner.nextInt();
}
}
//打印二维数组 nums
System.out.println(“\n数组 nums 的元素为:”);
for (int i = 0; i < m; i++) {
for (int j = 0; j < nums[i].length; j++) {
System.out.print(nums[i][j] + " ");
}
System.out.println();
}
}
}


(2)使用 `nextLine()` 读取:



class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 读取整数 m 作为二维数组的长度
int m = scanner.nextInt();
int n = scanner.nextInt();
scanner.nextLine(); // 读取换行符
//创建二维数组 nums
int[][] nums = new int[m][n];
//读取 m 行数据到二维数组 nums
for (int i = 0; i < m; i++) {
//读取整行数据
String line = scanner.nextLine();
//将每个整数分割保存到一维数组
String[] values = line.split(“\s+”);
//创建长度为 n 的一维数组
nums[i] = new int[n];
//保存每个整数到一维数组
for (int j = 0; j < n; j++) {
nums[i][j] = Integer.parseInt(values[j]);
}
}
//打印二维数组 nums
System.out.println(“\n数组 nums 的元素为:”);
for (int i = 0; i < m; i++) {
for (int j = 0; j < nums[i].length; j++) {
System.out.print(nums[i][j] + " ");
}
System.out.println();
}
}
}


结果如下:



3 4
1 8 7 3
2 3 4 5
4 5 6 7

数组 nums 的元素为:
1 8 7 3
2 3 4 5
4 5 6 7


### 2.6.读取长度大小未知的二维锯齿数组


描述:输入若干行,每一行有若干个整数,整数之间用空格分隔,并且每一行的整数个数不一定相同。例如:



1 2 3 45
3 4
9 0 -1 2
1 4 6
4 6 7 8 7



class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<List> nums = new ArrayList<>();
// 逐行读取数据并保存到二维数组锯齿 nums
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
if (line.isEmpty()) {
break; // 输入结束
}
String[] values = line.split(“\s+”);
List row = new ArrayList<>();
for (String value : values) {
row.add(Integer.parseInt(value));
}
nums.add(row);
}
//打印二维锯齿数组 nums
System.out.println(“二维锯齿数组 nums 的元素为:”);
for (List row : nums) {
for (Integer value : row) {
System.out.print(value + " ");
}
System.out.println();
}
}
}


结果如下:



1 2 3 45
3 4
9 0 -1 2
1 4 6
4 6 7 8 7

二维锯齿数组 nums 的元素为:
1 2 3 45
3 4
9 0 -1 2
1 4 6
4 6 7 8 7
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

0)]

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要根据多个经纬度坐标找出中心点,可以采用以下步骤: 1. 定义一个经度数组和纬度数组,分别存储输入的经纬度坐标。 2. 计算经度的平均值和纬度的平均值,作为中心点的经纬度坐标。 3. 将中心点的经纬度坐标输出。 以下是一个示例代码: ```java import java.util.Scanner; public class CenterPoint { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入经纬度坐标个数:"); int n = scanner.nextInt(); double[] lng = new double[n]; // 经度数组 double[] lat = new double[n]; // 纬度数组 System.out.println("请输入经纬度坐标:"); for (int i = 0; i < n; i++) { System.out.print("第" + (i + 1) + "个经度:"); lng[i] = scanner.nextDouble(); System.out.print("第" + (i + 1) + "个纬度:"); lat[i] = scanner.nextDouble(); } double centerLng = getCenter(lng); // 中心点经度 double centerLat = getCenter(lat); // 中心点纬度 System.out.println("中心点经度:" + centerLng); System.out.println("中心点纬度:" + centerLat); } /** * 计算数组中的平均值 * * @param arr 数组 * @return 平均值 */ public static double getCenter(double[] arr) { double sum = 0; for (double num : arr) { sum += num; } return sum / arr.length; } } ``` 在上面的示例代码中,我们定义了 `getCenter` 方法来计算经度和纬度的平均值,然后将其输出作为中心点的经纬度坐标。在使用时,我们需要输入经纬度坐标个数以及每个坐标的经纬度值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值