精华内容
下载资源
问答
  • java中数组实现的错误
    2021-03-06 16:12:17

    作为一个刚学java的小白 真是错误百出 下面就是一个大神会非常不屑的一个小错误

    数组在初始化的时候仅仅是定义了一个数组,并未其中的内容初始化。

    附上错误代码

    class student

    {

    public int grade=1;

    }

    public class array {

    public static void main(String [] args)

    {

    student rong[]=new student[5];

    for(int i=0;i

    {

    rong[i].grade=(-1)*i;

    }

    Arrays.sort(rong, new E());

    }

    }//这只是部分代码,代码不完整

    student rong[]=new student[5];

    这里出现了错误,应该将其中的类在再进行一步初始化:

    for(int i=0;i

    {

    rong[i]=new student();

    }

    或者改为:

    student rong[]=new student [] {new student(),new student(),new student(),new student()};

    但是我还是不理解student rong[]=new student[5];这样不就已经为数组分配5个student空间了吗,为什么会出现这种错误呢!

    抛出的异常为Exception in thread "main" java.lang.NullPointerException;

    更多相关内容
  • 函数readDat()是从文件in71.dat读取20行数据存放到字符串数组xx(每行字符串长度均小于80)。请函数readDat()是从文件in71.dat读取20行数据存放到字符串数组xx(每行字符串长度均小于80)。请编制函数jsSon(),...

    函数readDat()是从文件in71.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请

    函数readDat()是从文件in71.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSon(),其功能是:以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中。最后调用函数 writeDat()把结果xx输出到文件out71.dat中。

    条件:从字符串中间一分为二,左边部分按字符的ASCⅡ值降序排序,右边部分按字符的ASCⅡ值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。

    例如: 位置 0 1 2 3 4 5 6 7 8

    源字符串 a b c d h g f e

    1 2 3 4 9 8 7 6 5

    处理后的字符串 d c b a e f g h

    4 3 2 1 9 5 6 7 8

    注意:部分源程序已给出。

    请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。

    试题程序:

    include<stdio. h>

    inc lude< st ring. h>

    inc lude<conio, h>

    char xx[20] [80];

    void jsSort()

    {

    }

    void main ( )

    {

    readDat ();

    jsSort ();

    writeDat ( );

    }

    readDat ( )

    {

    FILE *in;

    int i=0;

    char *p;

    in=fopen ( "in71.dat", "r");

    while (i<20 && fgets(xx[i],80,in)!=NULL)

    {

    p=strchr (xx [i] , ' \n' );

    if(p)

    *p=0;

    i++;

    }

    fclose (in);

    }

    writeDat ( )

    {

    FILE *out;

    int i;

    clrscr ( );

    out=fopen ( "out71.dat", "w" );

    for (i=0; i<20; i++)

    {

    printf("%s\n",xx[i]);

    fprintf (out, "%s\n" ,xx[i] );

    }

    fclose (out);

    }

    展开全文
  • C语言的数组定义方式

    万次阅读 2021-01-08 20:14:58
    C语言的数组定义方式c语言数组定义方式1、一维数组2、一维数组初始化3、一维数组元素的引用 数组是存储数据的结构。由于单个变量所能存储的数据很有限,所以有了数组存储结构。不仅如此,数组和指针是相辅相成的,...


    数组是存储数据的结构。由于单个变量所能存储的数据很有限,所以有了数组存储结构。不仅如此,数组和指针是相辅相成的,学习数组可以为学习指针打下基础。
    注意: 同一数组中存储的数必须满足以下两个条件:

    这些数的类型必须相同。
    这些数在内存中必须是连续存储的。

    换句话说,数组是在内存中连续存储的具有相同类型的一组数据的集合。

    c语言数组定义方式

    1、一维数组

    通常一维数组的定义方法为:

    类型说明符 数组名[常量表达式];
    例如:int a[5];

    它表示定义了一个整型数组,数组名为 a,定义的数组称为数组 a。数组名 a 除了表示该数组之外,还表示该数组的首地址;此时数组 a 中有 5 个元素,每个元素都是 int 型变量,而且它们在内存中的地址是连续分配的。也就是说,int 型变量占 4 字节的内存空间,那么 5 个int型变量就占 20 字节的内存空间,而且它们的地址是连续分配的。
    在定义数组时,需要指定数组中元素的个数。方括号中的常量表达式就是用来指定元素的个数,数组中元素的个数又称数组的长度。
    注:数组中的下标是从 0 开始的(而不是 1)。
    为什么下标是从 0 开始而不是从 1 开始呢?如果从 1 开始,那么数组的第 5 个元素就是 a[5],而定义数组时是 int a[5],两个都是 a[5] 就容易产生混淆。而下标从 0 开始就不存在这个问题了!所以定义一个数组 a[n],那么这个数组中元素最大的下标是 n–1;而元素 a[i] 表示数组 a 中第 i+1 个元素。

    2、一维数组初始化

    1)完全初始化
    给数组里的元素全部赋值。

    例如:int a[5] = {1, 2, 3, 4, 5};

    2)不完全初始化
    给数组里的部分元素赋值。

    int a[5] = {1, 2};

    意义为讲a[0],a[1]分别赋值为1,2。而后面没有被初始化的元素会自动被初始化为0。需要注意的是,“不完全初始化”和“完全不初始化”不一样。如果“完全不初始化”,即只定义“int a[5];”而不初始化,那么各个元素的值就不是0了,所有元素都是垃圾值。
    你也不能写成“int a[5]={};”。如果大括号中什么都不写,那就是极其严重的语法错误。大括号中最少要写一个数。比如“int a[5]={0};”,这时就是给数组“清零”,此时数组中每个元素都是零。此外,如果定义的数组的长度比花括号中所提供的初值的个数少,也是语法错误,如“a[2]={1,2,3,4,5};”。
    3)如果定义时就已经给全部数组元素赋了初值,那么你可以不用定义数组长度,因为元素的个数已经确定了。这样既方便也不会报错。

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

    3、一维数组元素的引用

    C 语言规定,只能逐个引用数组元素,而不能一次引用整个数组。前面讲过,数组元素的表示形式为:数组名[下标]

    下标可以是整型常量或整型表达式,比如:
    a[0] = a[5] + a[7] - a[2 * 3]
    定义数组时的常量表达式表示的是数组的长度,而引用数组元素时的下标表示的是元素的编号。比如:

    #include <stdio.h>
    int main(void)
    {
        int a[3] = {1, 2, 3};  //定义长度为3的数组a
        int t;
        t = a[2];  //引用数组a中下标为2的元素a[2]=3
        printf("t = %d\n", t);
        return 0;
    }
    

    输出结果是:
    t = 3

    “int a[5];”是定义了有 5 个元素的数组,这 5 个元素分别为 a[0]、a[1]、a[2]、a[3]、a[4]。而 t=a[3] 中的 a[3] 不是数组,只是其中的元素 a[3]。
    此外,当给元素单独赋值时不能加大括号,因为元素就是变量,即 a[5] 只是一个变量名。前面是怎么给变量赋值的现在就怎么给数组元素赋值,比如“a[5]=1;”。但是对于上面这个程序,这么写还是错误的。因为数组元素的下标是从 0 开始的,数组 a 的元素只有 a[0]~a[4],并没有 a[5] 这个元素。

    展开全文
  • 数组定义及初始化

    千次阅读 2021-09-21 17:14:14
    文章目录一、数组的概念1.定义2.声明数组二、数组初始化规则二、数组的常规操作多维...(1)TypeName :存储在数组中每个元素的值得类型,比如:int、 float 、double、char等。 (2)ArrayName :数组名。 (3)Arr..


    # 学习简介 主要学习数组的初始化和数组的常见操作等。

    一、数组的概念

    1.定义

    数组(array)是一种数据格式,能够存储多个同类型的值。

    2.声明数组

    通用格式: TypeName ArrayName[ArraySize];
    (1)TypeName :存储在数组中每个元素的值得类型,比如:int、 float 、double、char等。
    (2)ArrayName :数组名。
    (3)ArraySize :数组元素的个数。该值一定是在编译时就是已知确定的值。所以它必须是整型常数或者是const值、常量表达式,不能是编译时值不确定的变量。
    注意:
    if(ArrayIdx > ArraySize)
    编译可正常编译,不报错;
    运行结果为脏值;
    这种情况的写法是非常危险的。

    错误示例:
    	int name[10];
    	cout<<name[0]<<endl;
    	cout<<name[20]<<endl; //在编译时,不会报错,所以这种数组越界访问是很危险,需要人为校验,或者添加代码校验,否则输出脏值。
    	//以上代码在运行时,会发生提示:使用数组name,但没有对其进行初始化,输出的值都是脏值。
    正确示例:
    	int name[10]={0,1,2}; //这种初始化,默认后面的数值均为0
    	cout<<name[0]<<endl; //0
    	cout<<name[2]<<endl; //2
    	cout<<name[8]<<endl; //0
    

    二、数组初始化规则

    1.数组只有在定义时才能使用初始化。
    2.数组不能直接赋值给另一个数组。
    3.在数组定义时就进行初始化时,数组大小可以不写,编译器会自动计算元素个数。
    4.数组初始化时,当初始化的值少于数组大小时,未指定的元素会被编译器自动设置为0。
    5.当数组需要指定所有值为A时,只需写成int ArrayName[10] = {1};即将数组的元素全指定为1。

    //正确代码
    	int a[4]={1,2,3,5}; // 1 2 3 5
    	int b[] ={1,2,3}; // 1 2 3 没有指定数组大小,但编译器自动计数为3个元素。sizeof(b) = 12个byte(3*4byte),求数组长度应该为sizeof(b)/sizeof(b[0]);
    	int c[3] = {0}; // 0 0 0
    	int d[5]={0,1,2}; // 0 1 2 0 0 
    	int h[3] = {}; // 0 0 0 大括号中什么不写,也是自动初始化为0,一般我们显示写比较好。
    
    //错误示例
    	int e[2] = {1,2,3}; //初始值设定项太多
    	
    	int f[4]; 
    	f[4] = {1,2,3,4}; //采用{}方式初始化数组必须在定义的同时进行初始化,先定义再初始化是不行的,f[4]是表示一个元素,且索引还超出该数组的范围了。
    	f = a; //错误提示: 左操作数必须为左值。因为不能直接将整个数组名直接赋值给另一个数组名。
    	char  g[2] = {199.0, 2}; //-57 2  虽然编译不会报错,但199.0是double类型,和char转换存在精度损失,同时199.0超过了char的范围。
    
    //纠正错误示例
    int f[4];
    //定义后再初始化,可以使用for循环对每个元素初始化,或者用memcopy从另一个数组复制的初始值,或者用memset统一初始化。
    
    

    补充:左操作数必须为左值
    通常我们认为表达式的等号左侧的数为左值,右侧的数为右值。一般,左值是一个变量(即存在内存地址)。

    //以下两行代码在C++中会运行正常,且得到我们程序设计的正常结果,原因是C++会自动优化。
    //但如果在C语言中,会编译报错,提示左操作数必须为左值。
    int a=1,b=2,c;
    c = a>b?a:b=10;  //原因等价于先计算表达式a>b?a:b,返回一个常量(常量不是变量,没地址),常量是无法被赋值成10的。
    
    //在C语言中,正确写法
    int a=1,b=2,c;
    c = a>b?a:(b=10); //非要赋值,则需要加括号,c = 10。
    

    二、数组的常规操作

    1. 数组结构的实现是使用顺序存储结构,是一种线性存储结构,对存储数据通常只有查找和修改操作。
    2. 数组的修改(插入和删除),其算法效率比较差。
    3. 数组可以有多维的,但顺序存储是一维的,所以数组的存储方式有两种:
      (1)以列为主(先列后行)。
      (2)以行为主(先行后列)——C语言一般采用该方法。

    多维数组查找指定元素

    需要确定如下信息:
    (1)多维数组是以列为主还是以行为主?
    (2)多维数组在内存中存放的首地址,一般就是数组名。
    (3)数组的坐标索引。
    (4)数组的数据类型——获取每个元素的字节数。
    比如数组a[n][m],查找aij的位置,数据类型为int,以行序为主。
    a[i][j]= (&a[0][0] + (im+j)*sizeof(int));


    总结

    展开全文
  • 【单选题】下列关于java语言的数组描述错误的是( ) 【单选题】下面程序段输出的结果是( )。 String s=”ABCD”; s.concat(“E”); s.replace(‘C’,’F’); System.out.println(s); 【单选题】下列...
  • 一维数组定义方式在C语言使用数组必须先进行定义。一维数组定义方式为:类型说明符 数组名 [常量表达式];其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义数组标识符。方括号的常量...
  • C语言一维数组定义和引用

    千次阅读 2021-06-02 17:43:48
    1、C语言一维数组定义和引用在程序设计,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在语言数组属于构造数据类型。一个数组可以分解为多个...
  • 表示定义一个三行二列的二维数组,但是a[0] = {1,6}; 是对一维数组进行赋值,而a是二维数组无法使用一维数组的赋值方法,所以程序会报错。该代码的正确方法应该是:int a[][] = new int[3][2];a[0][0]=1;a[0][1]=6;...
  • 在C语言,一维数组定义方式为:类型说明符数组名——以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在C语言,一维数组定义方式为:类型说明...
  • 1、字符数组定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号...
  • 上面这段代码的错误就在于初始化时没有给出所需存放的元素个数,而因为数组初始化如果不给出元素个数的话,就会把初次定义数组里元素的个数当成这个数组所能存放的元素个数。所以上面代码的arr数组只能存
  • 提示:文章写完后,目录可以自动生成,如何生成可参考右边...提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、
  • JAVA数组定义及用法

    千次阅读 2021-03-06 17:57:02
    数组是有序数据的集合,数组中的每一个元素具有同样的数组名和下标来唯一地确定数组中的元素。1. 一维数组1.1 一维数组定义type arrayName[];type[] arrayName;当中类型(type)能够为Java随意的数据类型,包含...
  • 【填空题】Java规定,如果子类中定义的成员方法与父类中定义的成员方法同名,并且参数的( )和类型以及( )的类型也相同,则父类的同名成员方法被屏蔽。【填空题】一个try代码段后面必须跟着若干个( )代码段或者一个( )...
  • java定义int数组

    2021-04-17 02:40:17
    java int 动态数组,java对象数组详解,javaint数组,java定义int数组java 动态int数组,java对象数组详解,javaint数组,java定义int数组二维数组、多维数组 数据的有点 不使用数组定义 100 个整形变量:int i1;...
  • 数组定义的三种方式

    万次阅读 2018-09-25 17:01:58
     // 数组定义的三种方式  // 第一种  int [] a = newint[5]; // a[0] = 10;    // 第二种  int [] c = newint[]{1,2,3};  // 第三种  int [] i ={1,2,3,4};  // 错误的写法  ...
  • vector array; array.push_back( 1 ); array.push_back( 2 ); array.push_back( 3 );...for( vector::size_type i=array.size()-1;... --i ) // 反向遍历array数组 { cout << array[i] << endl...
  • 数组定义以及使用方法

    千次阅读 2021-01-08 21:53:48
    前言 数组!!! 提示:以下是本篇文章正文内容,下面案例可供参考 ...5、数组可以定义为任意数据类型,并且可分为一维数组或多维数组 二、使用方法 type var-name[ ]; ##例如:int [ ] arr1 = new
  • 怎样用java定义一个int数组 Java一维数组定义及初始化 int []a; a[]={1,2,3}...怎样用java定义一个int数组 Java一维数组定义及初始化 int []a; a[]={1,2,3}...相关问题:匿名网友:int[] anArray = null;这样赋值...
  • 可以说,数组是迄今为止存储数据的第一个实际结构. 尽管较早学习的变量也可以存储数据,但是变量可以存储的数据非常有限....存储在同一数组中的数字必须满足以下两个条件: 这些数字的类型必须相同. 这些数字必须...
  • C试题 - 在c语言中文,一维数组定义方式为:类型C试题一、选择题:以下对一维整型数组a的正确说明是A int a(10); B int n=10,a[n]; C int n; D #define SIZE 10scanf(“%d”,&n);int a[SIZE];int [a];若有说明...
  • 数组编程的常见错误

    千次阅读 2012-12-14 19:49:37
    数组编程的常见错误 (1)定义数组时,数组长度要用常量或常量表达式,不能用变量。 int a[5]; //ok 用常量定义数组大小 const int length=5; int a[length]; //ok  用常变量定义数组大小 #define ...
  • PHP中定义数组时,不需要指定数组的大小。答:√科学发展观的重要借鉴是答:经济增长不等于经济发展和社会进步影响铸铁石墨化的主要因素只有铸铁化学成分。答:错厂商产量增加的比例大于各种要素增加的比例被称之为...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼西工大机考《C语言程序设计》网考寻求答案(非免费)找我Q...,以下选项对a数组元素正确引用的是( )。A.a[2][!1]B.a[2][3]C.a[0][3]D.a[1>2][!1]2. 以下描述错误的是...
  • 1. 数组定义 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。 2. 声明数组 Go 语言数组声明需要指定元素类型及元素个数,语法格式...
  • 那么到底什么是数组呢?顾名思义数组就是很多数的组合!那么这些数有没有什么要求呢,是不是不管什么数组合在一起都是数组呢?同一数组中存储的数必须满足以下两个条件:这些数的类型必须相同。这些数在内存必须是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 300,635
精华内容 120,254
关键字:

以下数组定义中什么是错误的