精华内容
下载资源
问答
  • 利用 stringstream 和 getline 实现仅通过一次键盘录入初始化整个数组我们有时候需要从键盘输入一个数组,如果一次输入一个元素将十分的麻烦,因此我们考虑一次性输入整个数组,每个元素之间用空格分隔,然后再在...

    我们有时候需要从键盘输入一个数组,如果一次输入一个元素将十分的麻烦,因此我们考虑一次性输入整个数组,每个元素之间用空格分隔,然后再在程序内将每个元素分开,存到数组当中。我们可以利用 stringstream 和 getline 来实现。

    标准库定义了三种类型的字符串流:

    istringstream//提供读string的功能
    ostringstream//提供写string功能
    stringstream//提供读写string功能,一般用 stringstream 就行了
    

    stringstream 的常用操作:

    stringstream seq;//创建 stringstream 对象
    stringstream seq(s);//用 string 对象s的内容来创建一个 strigstream 对象
    seq.str();//返回 seq 中存储的 string 对象
    seq.str(s);//将 string 对象复制给 seq,返回 void

    具体的代码如下

    #include<sstream>
    //使用 stringstream 类必须要包含该头函数
    
    string input;
    stringstream _input;
    getline(cin, input);//读取含空格字符串
    _input.str(input);//用字符串 input 初始化 stringstream 对象 _input
    
    for(int i = 0; i < numofObject; i++)//numofObject 为元素的个数
    {
        _input >> object[i];//把每一个元素存到数组当中
    }
    展开全文
  • java中通过键盘输入来实例对象数组,同时对类对象排序,希望初学java的同学们可以下载下学习下
  • 数组介绍(静态,动态初始化数组的遍历 数组介绍(静态,动态初始化数组的遍历 数组遍历案例 数组中常见的异常 数组我们常说的是一维数组,二维数组等等,严格意义来说在java中是没有一维数组的,数据本身...

    数组介绍(静态,动态初始化)数组的遍历

    1. 数组介绍(静态,动态初始化)
    2. 数组的遍历
    3. 数组遍历案例
    4. 数组中常见的异常

    数组我们常说的是一维数组,二维数组等等,严格意义来说在java中是没有一维数组的,数据本身就是引用数据类型,是同一种数据类型的集合,就是一个容器。
    使用数组的好处是可以给数组中的元素进行自动编号,方便我们可以操作这些数组。
    对数组的定义我们有动态初始化和静态初始化。

    使用数组我们的该注意哪些?

    1. 数组的下标是从0开始的一直到长度-1
    2. 数据没有赋值,是会有初始值的
    3. 一旦声明不能改变数组的容量

    (动态和静态初始化)使用场景:

    类型使用场景
    动态初始化数组的定义与数组分配空间和赋值是分开进行的
    元素个数知道,但是值不知道的时候。
    比如级预招生20人,但是每个人的名字不知道
    静态初始化在定义数组的同时分配空间赋值

    动态初始化
    语法格式数据类型[]变量名 = new 数据类型[元素个数];
    结构式分析:

    分析
    数据类型可以是基本数据类型也可以是引用数据类型
    []特殊的符号,表示一个数组
    变量名只要符合命名规范即可

    左边:可以写成数据类型 变量名[],但我们建议写成常规写法。
    右边:new 表示在内存中产生容器的实体,通过new关键字开辟空间,数据类型和左边的类型保持一致。
    元素个数:存放值的个数或者信息的个数。

    案例

    int []arrs = new int[5];
    System.out.println(arrs[0]);
    System.out.println(arrs[1]);
    System.out.println(arrs[2]);
    System.out.println(arrs[3]);
    System.out.println(arrs[4]);
    

    输出结果为

    0
    0
    0
    0
    0
    

    下标默认从0开始到长度-1;
    在java中,java提供了一种方法可以以数组的形式打印出结果,Arrays.toString()方法.详细方法可见API,java.util包下的Arrays的toString方法,下面为该方法的API截。
    toString

    int []arrs = new int[5];
    System.out.println(Arrays.toString(arrs));
    

    输出的结果为:[0,0,0,0,0]


    静态初始化
    语法格式数据类型[ ]变量名=new 数据类型[ ]{值1,值2,值3....};
    可以简写为:数据类型[ ]变量名={ 值1,值2,值3....};

    案例:

    public static void main(String []args){
    	String []names=new String[]{"kevin","zhangsan","lisi"}
    	System.out.println(names[0]);
    }
    

    控制台输出结果为:

    kevin
    

    静态和动态初始化区别就是:
    动态我们知道有多少个,但是具体值不知道,静态我们是直接赋值。我们可以结合不同场景下的条件合理使用两种初始化方式


    数组遍历
    首先我们先通过一个案例来开始我们对数组遍历的学习。

    public class Test{
    public static void main (String [] args){
    	int nums[]={1,2,3,7,5};//静态初始化
    	System.out.println(names[0]);
    	System.out.println(names[1]);
    	System.out.println(names[2]);
    	System.out.println(names[3]);
    	System.out.println(names[4]);
    	}
    }
    

    我们发现这样的数组我们还能处理,但是如果有1000个甚至更多,显然这种方法就不可取了。为了解决这种情况,我们引入了对数组的遍历。

    什么是数组的遍历?
    数组的遍历就是依次查询数组中的元素信息,不会多查也不会少查当然也不会发生错乱。

    在数组中,我们知道输出System.out.println(names[0]);就是进行输出数组中第一个元素信息,我们同样也知道数组的长度是0到n-1,那么如何来表达这个长度呢,java中有个length方法,可以有效的解决这个问题。我们用数组名.length来获取数组的长度。

    主要的遍历方式: for循环和foreach

    for循环遍历数组案例:

    public static void main (String []args){
    	int nums[]={1,2,3,7,5};
    	//数组的遍历
    	for(int i = 0;i<=nums.length-1;i++){//0 1 2 3 4
    	//输出打印当前数组所在的元素信息
    	System.out.println(nums[i]);
    	}
    }
    

    当然我们也可以通过前面学习的函数来进行打包成独立的函数方法。

    /*
    *分析:返回值 void
    *		函数名称 query
    *		位置内容的参与 int []arrs
    */
    public static void query(int [] arrs){
    	for(int i = 0;i<=nums.length-1;i++){
    	//输出打印当前数组所在的元素信息
    	System.out.println(nums[i]);
    }
    
    public static void main (String []args){
    	int nums[]={1,2,3,7,5};
    	query(nums);//通过函数名直接调用处理
    }
    

    for循环遍历数组的使用场景:
    一般主要用在查询,后续对数组需要进行修改,删除,改写,建议


    foreachfor循环的加强版,是JDK5.0后的加的新的循环类型,被称之为加强版循环,可以在不使用下标的情况下,遍历数组。
    foreach的结构体:

    for(数据类型 变量名:要遍历的数组){
    	输出语句(变量名);
    }
    

    数据类型:要遍历数组的数据类型;
    变量名:存放临时值的容器;

    foreach循环遍历数组案例:

    public static void query(int[]nums){
    	for(int n:nums){
    		System.out.println(n);
    	}
    }
    

    主函数:

    public static void main (String []args){
    	int nums[]={1,2,3,7,5};
    	query(nums);//通过函数名直接调用处理
    }
    

    下面我们会写几个关于数组遍历的案例,进行深入学习数组的遍历。
    案例1:获取数组中的元素相加求和

    public static void main (String []args){
    	//定义数组
    	int [] nums={12,24,23,15,17,98};
    	int sum = add(nums);
    	System.out.println(sum)
    	}
    	
    	/*
    	*获取数组中的元素相加求和
    	*分析:
    	*1.返回值类型	int
    	*2.函数名称	add
    	*3.参数列表(未知内容参与)int [] arrs
    	*/
    	public static int add(int []arrs){
    	/*
    	*1.定义变量存放 和 信息	int sum
    	*2.依次遍历数组拿到每个值信息,把拿到的值信息加入到sum中
    	*3.返回结果值给调用方
    	*/
    		int sum=0;
    		for(int i = 0;i <=arrs.length;i++){
    		//System.out.println(arrs[i]);//每次遍历到的值信息
    		
    		sum+=arrs[i];//把遍历到的值加入到sum变量中去
    	}
    		return sum;
    }
    

    案例2:随机生成10个1-20之间的整数,然后进行相加求和
    分析:这个我们只知道元素个数是10个,不知道值信息,所以用数组的动态初始化。
    随机数:javaApi中的lang包中有个方法为Math类(基本数学运算的方法).random(),详细可看API,下图为API中详解:
    random
    由API中的范围结合题目范围为1-20,所以我们需要乘以20,这是的结果值为:1.0-20.0之间,小于20.0,所以我们需要+1,让该范围成1.0-21.0之间,也就是20.9999999~,然后将此转换成int类型,使后面的精度丢失成1-20.

    (int)(Math.random()*20)+1
    

    利用随机工具生成10个整数,依次放入到数组中去;

    public static void main (String []args){
    	//定义变量 数组对象
    int []numbers= new int[10]; //动态初始化
    	//随机赋值
    for(int i = 0;i<=numbers.length;i++){
    	//随机进行赋值
    	int num=(int)(Math.random()*20)+1;
    	numbers[i]=num;//将每次随机到的值传入数组numbers中
    }
    	//遍历
    	//System.out.println(Arrays.toString(numbers));
    	int sums=add(numbers);
    	System.out.println(sums);
    	}
    

    由了上面的操作,我们就会得到一个容量大小为10且里面已经随机传入元素值的数组。接下来我们只需要写个功能函数进行数组相加求和即可。这里可以使用上面的add

    /*
    	*获取数组中的元素相加求和
    	*分析:
    	*1.返回值类型	int
    	*2.函数名称	add
    	*3.参数列表(未知内容参与)int [] arrs
    	*/
    	public static int add(int []arrs){
    	/*
    	*1.定义变量存放 和 信息	int sum
    	*2.依次遍历数组拿到每个值信息,把拿到的值信息加入到sum中
    	*3.返回结果值给调用方
    	*/
    		int sum=0;
    		for(int i = 0;i <=arrs.length;i++){
    		//System.out.println(arrs[i]);//每次遍历到的值信息
    		
    		sum+=arrs[i];//把遍历到的值加入到sum变量中去
    	}
    		return sum;
    }
    

    案例3:获取数组中的最小值,该数组为键盘输入值
    案例题解析:获取键盘输入,我们可以通过javaApi提供的util包下的Scanner来获取用户输入的文本信息,下图为api详解:
    Scanner

    /*
    *获取数组的最小值,该数组为键盘输入值
    *分析:1.定义数组
    *2.假设一个最小值
    *3.依次遍历和我们假设的最小值进行比较
    *4.输出打印最小值
    */
    public static void main (String []args){
    	//定义变量 数组对象
    int []nums= new int[7]; //动态初始化
    	//实例化类对象,为获取键盘输入的值做准备
    	Scanner ner = new Scanner(System.in);
    for(int i = 0;i<=numbers.length;i++){
    	//提示信息
    	System.out.println("请输入您的第"+i+"个值:");
    	//获取值信息
    	int a =ner.nextInt();
    	nums[i]=a;//把获取键盘输入的值传入到数组nums中去
    
    	//获取最小值
    	int min[]=getMin(nums);
    	System.out.println(min);
    		}
    	}
    

    这里我们可以使用前面我们用到的Arrays.toString()方法输出打印出来.
    在写一个函数方法来处理比较大小的功能,获取最小值,用来给调用方调用。

    /*获取数组中的最小值
    *分析:
    *返回值类型	int
    *函数名称	getMin
    *参数列表	int arrs[]
    */
    public static int getMin(int[]arrs){
    	/*
    	*功能分析:
    	*1.定义变量,记住数组最小的值
    	*2.遍历数组,把数组中的每个元素和定义的最小值进行比较
    	*3.当遍历一遍之后,最小值产生,返回给调用方
    	*/
    	//定义变量,存放最小值
    	int min =arrs[0];
    	//遍历比较
    	for(int i = 0; i <=arrs.length;i++){
    	if(min>arrs[i]){//如果假设的最小值大于遍历的值,把最小值变量改为遍历的值
    	min= arrs[i];
    	}
    }
    return min;
    }
    

    数组中常见的异常
    1.数组的下标越界(ArrayIndexOutofBoundsException)
    看到这个异常,我们需要考虑的两个点:是否向上越界或者向下越界。
    主要看:看初始值和length范围。
    例如初始值为0,长度为5。下标编号就是0,1,2,3,4,如果我们输出编号5就是越界。
    2.空指针(NullPointerException)
    空指针表示没有任何对象的引用。

    public static void mian(String[]args){
    	//定义int类型数组
    	int[] x = {1,2,3,4};
    	System.out.println(x[1]);
    	//把x重新引用对象
    	x=null;
    System.out.println(x[1]);
    }
    

    当x=null的时候,表示没有任何引用了,就会报空指针异常。


    后面我们的博文会接着数数组中的内存解析(堆栈分析),以及数组冒泡排序。
    数组的内存解析堆栈分析(值传递,地址传递)
    冒泡排序

    展开全文
  • Java数组初始化

    千次阅读 2019-05-06 22:34:32
    1.Java数组初始化的两种方法: 静态初始化:程序员在初始化数组时为数组每个元素赋值; 动态初始化数组初始化时,程序员只指定数组的长度,由系统为每个元素赋初值。 Java数组是一种引用数据类型。数组...

    1.Java 数组初始化的两种方法:    

        静态初始化: 程序员在初始化数组时为数组每个元素赋值;

        动态初始化: 数组初始化时,程序员只指定数组的长度,由系统为每个元素赋初值。

     

      Java数组是一种引用数据类型。数组变量并不是数组本身,而是指向堆内存中存放的数组对象。因此,可以改变一个数组变量所引用的数组。

    2.数组是否必须初始化

        对于这个问题,关键在于要弄清楚数组变量和数组对象的差别。数组变量是存放在栈内存中的,数组对象是存放在堆内存中的。数组变量只是一个引用变量,他能够指向实际的数组对象。

        所谓的数组初始化并非对数组变量初始化,而是对数组对象进行初始化。

    展开全文
  • JAVA:数组键盘初始化赋值及线性查找索引 package com.chj.contact; import java.util.Scanner; public class Search { public static void main(String[] args) { System.out.println("请输入数组长度:"); ...

    JAVA:数组键盘初始化赋值及线性查找索引

    package com.chj.contact;
    
    import java.util.Scanner;
    
    public class Search {
    	public static void main(String[] args) {
    		System.out.println("请输入数组长度:");
    		Scanner scan = new Scanner(System.in);
    		int k = scan.nextInt();
    		int[] arr = new int[k];
    		System.out.println("请给数组赋值:");
    		// 通过键盘给数组赋值
    		for (int i = 0; i < k; i++) {
    			Scanner scan1 = new Scanner(System.in);
    			arr[i] = scan1.nextInt();
    		}
    		// 查找值
    		System.out.println("请输入查找值:");
    		Scanner scan1 = new Scanner(System.in);
    		int destination = scan1.nextInt();
    		// 进行索引
    		boolean isFlag = true;
    		for (int i = 0; i < arr.length; i++) {
    			if (arr[i] == destination) {
    				System.out.println("该数" + destination + "存在\t" + "索引为:" + i);
    				isFlag = false;
    				break;
    			}
    		}
    		if (isFlag) {
    			System.out.println("该数" + destination + "不存在\t");
    		}
    
    	}
    }
    
    
    展开全文
  • 数组初始化及其遍历

    2017-03-26 14:01:49
    定义一个类Initial,类的内部重载initArr()方法,分别实现对整形数组、双精度数型数组、字符串数组初始化功能,数组作为方法的参数,方法体内提示用户为数组元素输入数据,然后显示所有元素。 在main方法中创建三...
  • System.out.println("由键盘输入三个整数分别存入变量num1、num2、num3"); int a=0,b=0,c=0; boolean tt=true; L:while(tt){ try{ tt=false; a=scanner.nextInt(); switch (a) ...
  • (2)数组 初始化以后长度不可改变; (3)数组既可以存储基本数据类型、也可以存储引用数据类型; (4)直接打印数组名称,得到的是数组对应堆内存中的内存地址哈希值。 public class Test01 { public static void ...
  • 问题描述:利用对象数组,有5个长方体,前3个对象b[0],b[1],b[2]直接参数初始,需要定义默认构造函数,第四个b[3]用默认构造函数初始化,第5个长方柱b[4]定义时不初始化键盘输入; 输入描述:一个长方体的长宽高 ...
  • (二)二维数组初始化格式 1.动态初始化 1.1 二维数组格式1 数据类型[][] 变量名 = new 数据类型[m][n]; m表示这个二维数组有多少个一维数组 必须写上 n表示每一个一维数组的元素个数 可选 举例: int[][] arr = new ...
  • 问题描述:编一个程序,用成员函数重载运算符“+”和“-”将二维数组相加和相减,要求第一个二维数组的值由构造函数设置,另一个二维数组的值由键盘输入 #include<iostream> using namespace std; const int r=...
  • js过滤字符串数组或对象数组

    千次阅读 2017-06-21 16:01:08
    在搞类似百度输入框提示功能时,发现取过来的数据过2-3s被覆盖,后发现是因为多次ajax请求,前一次请求结果覆盖后面结果的...对象数组输出 --------------- 字符串数组输出 //绑定点击事件 $("#testChangeObj
  • java:数组初始化及动态初始化

    千次阅读 2018-08-01 18:33:47
    package day02; public class Arraaylistone { public static void main(String[]args){ //解释左边:int代表类型,[]代表数组... //解释右边:new创建新的实体或对象,[]代表数组,5代表数组长度 //数据类型[]...
  • 数组可以初始化,即在定义时,使它包含程序马上能使用的值。 例如,下面的代码定义了一个全局数组,并用一组Fibonacci数初始化: int iArray[10]={1,1,2,3,5,8,13,21,34,55); //初始化 void main() {...
  • 返回:贺老师课程教学链接【项目3-用对象数组操作长方柱类】编写基于对象的程序,求5个长方柱的体积和表面积。...B数组中的前3个对象b[0]、b[1]、b[2]直接参数初始了,需要定义构造函数,而初始化中,各
  • 声明初始化&遍历&操作 一维数组 思维导图: ==概念:==数组具有连续内存位置的引用数据类型(对象 实际存储在堆中),由0个1个或多个具有相同类型、相同名称,不同索引的数据组合。 备注: 相同类型:组成...
  • java再体验之键盘输入数组 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的...
  • 【项目3-用对象数组操作长方柱类】 编写基于对象的程序,求5个长方柱的体积和表面积。长方柱类Bulk的数据成员包括长...B数组中的前3个对象b[0]、b[1]、b[2]直接参数初始了,需要定义构造函数,而初始化中,各对象
  • 编写基于对象的程序,求5个长方柱的体积和表面积。长方柱类Bulk的数据成员包括... B数组中的前3个对象b[0]、b[1]、b[2]直接参数初始了,需要定义构造函数,而初始化中,各对象提供的参数数目不同,需要有默认参数的构造
  • import java.util.Scanner; public class ArrayDemo7 { ... *键盘输入一个数,输出数组中指定元素 */ public static void main(String[] args) { // 定义一个数组 int[] array = new int[]{123,456,789,...
  • java面向对象--对象数组和集合类

    千次阅读 2018-07-26 16:19:48
    一、数组回顾 格式: 数据类型[] 数组名=new 数据类型[m]; 数据类型:基本类型,引用类型 举例: int[] arr=new int[3]; //int类型的数组 arr[0]=10; //元素基本类型的值 String[] arr=new String[3];//...
  • Java数组声明、创建、初始化 一维数组的声明方式: type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为: 数组名 = new 数组元素的类型 ...
  • 声明数组时不能指定其长度(数组中元素的个Java中使用关键字new创建数组对象,格式为:数组名 = new 数组元素的类型 [数组元素的个数]:实例: int[] array=new int[5];//这里定义了元素为5个的i组组组型的数组 完整...
  • 数组录入 情况一 知道数组长度 #include<iostream> using namespace std;..."请输入数组长度:"; cin>>length; int a[length]; for(int i=0;i<length;i++){ cin>>a[i]; ...
  • 数组的定义与使用 数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。 数组的定义: 类型说明符 数组名 【常量表达式 】【常量表达式】……; 数组名的构成方法与一般变量名...
  • 项目要求 编写基于对象的程序,求5个长方柱的体积和表面积。长方柱类Bulk的数据成员包括长...B数组中的前3个对象b[0]、b[1]、b[2]直接参数初始了,需要定义构造函数,而初始化中,各对象提供的参数数目不同
  • 第五周 项目3-对象数组

    千次阅读 2013-03-28 21:58:08
    第四个对象用默认构造函数初始化,第五个有键盘输入。 课本:第九章 构造函数 * * 程序的版权和版本声明部分 * Copyright (c)2013, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称: object.
  • 【项目3-用对象数组操作长方柱类】 编写基于对象的程序,求5个长方柱的体积和表面积。长方柱类Bulk的数据成员包括长...B数组中的前3个对象b[0]、b[1]、b[2]直接参数初始了,需要定义构造函数,而初始化中,各对象
  • 课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接【项目3-对象数组操作长方柱类】 编写基于对象的程序,求5个长方柱的体积和表面积。长方柱类Bulk的数据成员...
  • * ... * All rights reserved.... * 文件名称:test.cpp * 作 者:刘畅 ... * 完成日期:2015年 3 月 27 日 ... * 问题描述: 需要你定义长方柱类,代码中已经给出由5个长方柱对象构成的对象数组b;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,219
精华内容 14,487
关键字:

从键盘输入初始化对象数组