Java 输入方法 数组

news2025/1/13 13:36:46

目录

  • 一、输入方法
    • 1.常用方法
    • 2.Scanner的使用
    • 3.BufferedReader的使用
  • 二、数组
    • 1.数组的定义
      • 静态初始化数组
      • 动态初始化数组
      • 多维数组
    • 2.数组赋值机制
    • 3.数组拷贝
      • 使用循环逐元素拷贝
      • 使用 System.arraycopy() 方法
      • 使用 Arrays.copyOf() 方法
    • 4.数组排序
    • 5.数组合并
    • 6.数组翻转
    • 7.基于范围的 for 循环


一、输入方法

1.常用方法

在Java中,可以使用多种方法来获取用户的输入。以下是几种常用的输入方法:

  • 使用 Scanner 类:Scanner 类是Java标准库中提供的用于读取用户输入的类。它可以从标准输入(键盘)或其他输入流中读取数据。
  • 使用 BufferedReader 类:BufferedReader 类是Java标准库中提供的用于高效读取字符流的类。可以使用它来读取用户的输入。

2.Scanner的使用

首先从 java.util 包中导入 Scanner 类

  1. next():读取并返回输入中的下一个以空白字符分隔的字符串。

"空白字符分隔的字符串"指的是以空格、制表符或换行符等空白字符作为分隔符的字符串。当调用 next() 方法时,Scanner 会从输入中读取字符,直到遇到空白字符为止,然后返回读取到的字符串。

import java.util.Scanner;
...
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String input = scanner.next();
System.out.println("您输入的字符串是:" + input);
  1. nextInt():读取并返回输入中的下一个整数。
import java.util.Scanner;
...
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数:");
int number = scanner.nextInt();
System.out.println("您输入的整数是:" + number);
  1. nextDouble():读取并返回输入中的下一个浮点数。
import java.util.Scanner;
...
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个浮点数:");
double number = scanner.nextDouble();
System.out.println("您输入的浮点数是:" + number);
  1. nextLine():读取并返回输入中的下一行字符串。

nextLine() 方法会读取包括空格在内的整行文本。它会一直读取输入,直到遇到换行符(\n)为止,并将整行文本作为字符串返回。

import java.util.Scanner;
...
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一行字符串:");
String line = scanner.nextLine();
System.out.println("您输入的字符串是:" + line);
  1. hasNextXxx():检查输入中是否还有下一个指定类型的数据。
import java.util.Scanner;
...
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数:");
if (scanner.hasNextInt()) {
    int number = scanner.nextInt();
    System.out.println("您输入的整数是:" + number);
}
else {
    System.out.println("无效的输入!");
}

3.BufferedReader的使用

配合 try-catch 使用

  • 使用 BufferedReader 从文件中逐行读取文本
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        String fileName = "example.txt"; // 假设要读取的文件名为 example.txt

        try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line); // 逐行输出文本内容
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • 使用 BufferedReaderSystem.in(标准输入流)读取输入
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) {
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println("You entered: " + line); // 输出读入的内容
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


二、数组

1.数组的定义

静态初始化数组

在声明数组的同时,为数组元素指定初始值。可以使用花括号 {} 来包含初始值,并用逗号分隔各个元素。示例如下:

// 声明并初始化一个整数数组
int[] numbers = {1, 2, 3, 4, 5};

// 声明并初始化一个字符串数组
String[] names = {"Alice", "Bob", "Charlie"};

在静态初始化数组时,编译器会根据提供的初始值自动确定数组的长度。


动态初始化数组

在声明数组时,先指定数组的类型和长度,然后使用 new 关键字创建数组对象。示例如下:

// 声明一个整数数组,并指定长度为 5
int[] numbers = new int[5];

// 声明一个字符串数组,并指定长度为 3
String[] names = new String[3];

//先声明数组,再 new 分配空间
double scores[] ; //声明数组, 这时 scores 是 null
scores = new double[5]; // 分配内存空间,可以存放数据

动态初始化数组时,所有元素都会被自动初始化为默认值(例如,整数数组的元素默认为 0,字符串数组的元素默认为 null)。


多维数组

Java 中还支持多维数组,即数组的元素也可以是数组。可以使用多组方括号 [] 来表示多维数组的维度。示例如下:

// 声明并初始化一个二维整数数组
int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

// 声明一个三维字符串数组,并指定长度
String[][][] cube = new String[3][4][2];

多维数组的初始化方式与一维数组类似,可以使用静态初始化或动态初始化。

需要注意的是,数组的索引从 0 开始,因此可以通过索引访问数组中的元素。例如,numbers[0] 表示整数数组 numbers 的第一个元素。


此外,Java 还提供了一些数组相关的方法和属性,例如 length 属性用于获取数组的长度。可以使用点运算符 . 来访问数组的属性和调用方法。

int[] numbers = {1, 2, 3, 4, 5};
int length = numbers.length; // 获取数组的长度,结果为 5

2.数组赋值机制

  1. 基本数据类型赋值,这个值就是具体的数据,而且相互不影响。
int n1 = 2; int n2 = n1;
  1. 数组在默认情况下是引用传递,赋的值是地址。
//代码 ArrayAssign.java
int[] arr1 = {1,2,3};
int[] arr2 = arr1;

在这里插入图片描述


3.数组拷贝

使用循环逐元素拷贝

可以使用循环遍历源数组的每个元素,并逐个将其复制到目标数组中。示例代码如下:

int[] sourceArray = {1, 2, 3, 4, 5};
int[] targetArray = new int[sourceArray.length];

for (int i = 0; i < sourceArray.length; i++) {
    targetArray[i] = sourceArray[i];
}

通过循环逐个复制元素,实现了源数组到目标数组的拷贝。


使用 System.arraycopy() 方法

Java 提供了 System.arraycopy() 方法,可以方便地进行数组拷贝。该方法接受源数组、源数组的起始位置、目标数组、目标数组的起始位置以及要拷贝的元素数量作为参数。示例代码如下:

int[] sourceArray = {1, 2, 3, 4, 5};
int[] targetArray = new int[sourceArray.length];

System.arraycopy(sourceArray, 0, targetArray, 0, sourceArray.length);

通过调用 System.arraycopy() 方法,将源数组的元素拷贝到目标数组中。


使用 Arrays.copyOf() 方法

import java.util.Arrays;

Arrays 类提供了 copyOf() 方法,可以用于拷贝数组。该方法接受源数组和目标数组的长度作为参数,并返回一个新的目标数组,其中包含源数组的元素。示例代码如下:

import java.util.Arrays;
...
int[] sourceArray = {1, 2, 3, 4, 5};
int[] targetArray = Arrays.copyOf(sourceArray, sourceArray.length);

通过调用 Arrays.copyOf() 方法,将源数组的元素拷贝到目标数组中。


4.数组排序

使用Arrays类中的 sort() 方法来对数组进行排序

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {5, 2, 8, 4, 1};
        
        // 对数组进行排序
        Arrays.sort(numbers);
        
        // 打印排序后的数组
        for (int number : numbers) {
            System.out.print(number + " ");
        }
    }
}

使用lambda表达式来调整 sort() 方法的比较规则

import java.util.Arrays;

public class test1 {
    public static void main(String[] args) {
        int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5};
        System.out.println("Original array: " + Arrays.toString(arr));
        Arrays.sort(arr, (a, b) -> b - a);
        System.out.println("Sorted array: " + Arrays.toString(arr));
    }
}

// Original array: [3, 1, 4, 1, 5, 9, 2, 6, 5]
// Sorted array: [9, 6, 5, 5, 4, 3, 2, 1, 1]
public class test1 {
    public static void main(String[] args) {
        int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5};
        System.out.println("Original array: " + Arrays.toString(arr));
        Arrays.sort(arr, (a, b) -> {
            return a - b;
        });
        System.out.println("Sorted array: " + Arrays.toString(arr));
    }
}

// Original array: [3, 1, 4, 1, 5, 9, 2, 6, 5]
// Sorted array: [1, 1, 2, 3, 4, 5, 5, 6, 9]

5.数组合并

import java.util.Arrays;

public class test1 {
    public static void main(String[] args) {
        int[] arr1 = {3, 2, 1};
        int[] arr2 = {6, 5, 4};
        int length = arr1.length + arr2.length;
        int[] res = new int[length];
        System.arraycopy(arr1, 0, res, 0, arr1.length);
        System.arraycopy(arr2, 0, res, arr1.length, arr2.length);
        Arrays.sort(res);
        int[] arr = Arrays.copyOf(res, length);
        for (int i = 0; i < arr.length; ++i) {
            System.out.print(arr[i] + " ");
        }
    }
}

6.数组翻转

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};
        
        System.out.println("Original array: " + Arrays.toString(arr));
        
        // Reverse the array
        Arrays.reverse(arr);
        
        System.out.println("Reversed array: " + Arrays.toString(arr));
    }
}

// Original array: [1, 2, 3, 4, 5]
// Reversed array: [5, 4, 3, 2, 1]

7.基于范围的 for 循环

从 Java 5 开始,引入了基于范围的 for 循环(也称为增强型 for 循环或 foreach 循环),用于遍历数组、集合等可迭代对象。基于范围的 for 循环可以更简洁地遍历集合或数组中的元素,无需显式地使用索引。

for (elementType element : collection) {
    // 在此处处理每个元素
}
  • elementType 是集合中元素的类型。
  • collection 是要遍历的集合或数组。
  • element 是一个变量,用于迭代遍历集合中的每个元素。

例如,遍历一个整数数组:

int[] numbers = {1, 2, 3, 4, 5};

for (int number : numbers) {
    System.out.println(number);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1519617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kotlin编程权威指南学习知识点预览

一、变量、常量和类型&#xff1a; 变量、常量以及 Kotlin 基本数据类型。变量和常量在 应用程序中可用来储值和传递数据。类型则用来描述常量或变量中保存的是什么样的数据。 1、声明变量: // 变量定义关键字 —— 变量名 —— 类型定义 —— 赋值运算符 —— 赋值var na…

【Kafka面试演练】那Kafka消费者手动提交、自动提交有什么区别?

面试官&#xff1a;听说你精通Kafka&#xff0c;那我就考考你吧 面试官&#xff1a;不用慌尽管说&#xff0c;错了也没关系&#x1f60a;。。。 每日分享【大厂面试演练】&#xff0c;本期是《Kafka系列》&#xff0c;感兴趣就关注我吧❤️ 面试官&#xff1a;你先说说Kafka由什…

cuda cudnn安装

安装 cudnn是否安装成功 注意 cudnn对应的cuda的10.0版本无win11版本 下载win10 即可

linux系统关闭防火墙和SELINUX及配置网络

一&#xff0c;关闭防火墙和SELINUX 当我们进入界面后&#xff0c;输入用户名root&#xff0c;以及密码&#xff0c;密码我们是看不见的 然后输入指令cat -n /etc/sysconfig/selinux &#xff08;注意空格&#xff09; 输入指令 vi /etc/sysconfig/selinux &#xf…

杂七杂八111

MQ 用处 一、异步。可提高性能和吞吐量 二、解耦 三、削峰 四、可靠。常用消息队列可以保证消息不丢失、不重复消费、消息顺序、消息幂等 选型 一Kafak:吞吐量最大&#xff0c;性能最好&#xff0c;集群高可用。缺点&#xff1a;会丢数据&#xff0c;功能较单一。 二Ra…

第十五届蓝桥杯模拟考试III_物联网设计与开发官方代码分析

目录 前言&#xff1a;显示界面部分&#xff1a; 前言&#xff1a; 这次模拟的效果很不好。85分&#xff0c;4h的限时我花了两天完成&#xff0c;这个时间是远远超出要求的&#xff0c;而且最后还只拿到56分&#xff0c;抛开分数高低不提&#xff0c;就这个用时属实蜗牛一样的速…

2024年【危险化学品经营单位安全管理人员】考试及危险化学品经营单位安全管理人员考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 危险化学品经营单位安全管理人员考试根据新危险化学品经营单位安全管理人员考试大纲要求&#xff0c;安全生产模拟考试一点通将危险化学品经营单位安全管理人员模拟考试试题进行汇编&#xff0c;组成一套危险化学品经…

安装nginx

Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器&#xff0c;特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上nginx的并发能力确实在同类型的网页服务器中表现较好&#xff0c;中国大陆使用nginx网站用户有&#xff1a;百度、京东、新浪、网易、腾…

2024/3/14打卡k倍区间(8届蓝桥杯)——前缀和+优化***

题目 给定一个长度为 N 的数列&#xff0c;A1,A2,…AN&#xff0c;如果其中一段连续的子序列 Ai,Ai1,…Aj 之和是 K 的倍数&#xff0c;我们就称这个区间 [i,j] 是 K 倍区间。 你能求出数列中总共有多少个 K 倍区间吗&#xff1f; 输入格式 第一行包含两个整数 N 和 K。 以下 N…

DeePhage:预测噬菌体的生活方式

GitHub - shufangwu/DeePhage: A tool for distinguish temperate phage-derived and virulent phage-derived sequence in metavirome data using deep learning 安装 conda create -n deephage conda activate deephage pip install numpy pip install h5py pip install ten…

淘宝联盟高级API - 超级搜索api接口, 淘宝联盟商品搜索接口

淘宝联盟商品库超级搜索api接口&#xff0c;支持搜索商品链接、商品id&#xff0c;商品标题搜索&#xff0c;还有更多强大搜索选项。 注意&#xff1a;接口默认只查【含有优惠券】的商品&#xff0c;如果需要精确搜索&#xff0c;请将 has_coupon 参数设置为 false 获取接口秘…

深入理解JMM

一、什么是JMM JMM&#xff08;java memory model&#xff09;Java内存模型&#xff1a;是java虚拟机规范中定义的一组规范&#xff0c;用于屏蔽掉各种硬件和操作系统的内存访问差异&#xff0c;以实现让JAVA程序在各平台都能达到一致的并发结果。其主要规定了线程和内存之间的…

苍穹外卖问题记录(持续更新)

Day01_3.2.4前后端联调 1. 前端无法登录 &#xff08;1&#xff09;确保nginx服务器已经启动 &#xff08;2&#xff09;查看自己数据库的用户名和密码是否和老师的一样&#xff0c;不一样的话需要在application-dev.yml文件中把老师的用户名密码修改成自己的 老师的用户名…

面试常问,ADC,PWM

一 PWM介绍 pwm全名&#xff08;Pulse Width Modulation&#xff09;&#xff1a;脉冲宽度调制 在具有惯性的系统中&#xff0c;可以通过对一系列脉冲的宽度进行调制&#xff0c;来等效地获得所需要的模拟参量&#xff0c;常应用于电机控速等领域。PWM一定程度上是数字到模拟…

植物神经功能紊乱患者每天从5片黛力新减少至2片,只因找对了治疗方法!

植物神经功能紊乱是一种常见的心理疾病&#xff0c;其症状包括焦虑、失眠、疲劳、头痛、胃肠不适等&#xff0c;给患者带来很大的困扰。然而&#xff0c;这种疾病是可以治疗的。本文将介绍一位植物神经功能紊乱患者的治疗经历&#xff0c;希望能够帮助更多的人了解和治疗此病。…

【机器学习300问】38、什么是K-means算法?

在实际工作中&#xff0c;我们经常会遇到这样一类问题&#xff1a;给机器输入大量的特征数据&#xff0c;并期望机器通过学习找出数据存在的某种共性特征、结构或关联。这类问题被称为“非监督学习”问题。这篇文章我就来聚焦非监督学习中的其中一个任务——聚类 例如在数字营销…

F-logic DataCube3 任意文件上传漏洞复现(CVE-2024-25832)

0x01 产品简介 F-logic DataCube3是一款用于光伏发电系统的紧凑型终端测量系统。 0x02 漏洞概述 F-logic DataCube3 /admin/setting_photo.php接口处存在任意文件上传漏洞 ,未经身份验证的攻击者可通过该漏洞在服务器端写入后门,获取服务器权限,进而控制整个web服务器。 …

【计算机视觉】二、图像形成:2、几何基元和几何变换:2D变换

文章目录 一、向量和矩阵的基本运算二、几何基元和变换1、几何基元(Geometric Primitives)2、几何变换(Geometric Transformations)1. 各种变换的关系2. 变换公式3. 2D变换的层次4. python实现 一、向量和矩阵的基本运算 【计算机视觉】二、图像形成&#xff1a;1、向量和矩阵…

【研发日记】Matlab/Simulink技能解锁(五)——Simulink布线技巧

前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(二)——在Function编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(三)——在Stateflow编辑窗口Debug》 见《【研发日记】Matlab/Simulink…

HarmonyOS ArkUI入门—HarmonyOS ArkUI来开发一个健康饮食应用

本文演示如果在DevEco Studio 3里面&#xff0c;用HarmonyOS的ArkUI来开发一个健康饮食应用。体验HarmonyOS 3最新API 9&#xff01; 获取HarmonyOS应用 HarmonyOS的ArkUI来开发一个健康饮食的ArkUI程序“ArkUIHealthyDiet”&#xff0c;基础代码已经有了[1]&#xff0c;个人…