首先:
i%2 == 0?person3[i].name = "www":person3[i].name = "http";这种写法为什么不对?能不能改正一下,变成正确的?但是不要改成这样:person3[i] .name = i%2 == 0?"www":"heep";可以么?
第二个问题:
package com.Array;public class ArrayTest2
{
public static void main(String[] args)
{
Person2[] p = new Person2[100];
int j = 2;
     int k = 1;
  for(int i = 0;i < p.length;i++)
{
p[i] = new Person2();
                        j += i;
                        k += i;
                 p[j].name = "ll";
                 p[k].name = "pp";
}

for(int m = 1;m < p.length;m ++)
{
System.out.println(p[m].name);
}

}}
class Person2
{
String name;

}
这段代码会出现空指针异常,我很不理解为什么?能告诉我么?

解决方案 »

  1.   

    第一题,楼主是想挑战当初创建java这套系统的那些人的权威么?或者还是用if else吧
    第二题,
    请注意:
     j += i;
    k += i;

    j++;
    k++;的区别
    你输出的j和k那是累加
      

  2.   

    j += i;
    k += i;
    p[j].name = "ll";
    p[k].name = "pp";i=0时,j=2  此时p[2]还没有创建,当然会NullPointerException
    即使你创建了,没有空指针异常,到后面还会有 ArrayIndexOutOfBoundsExcption
      

  3.   

    package practice;public class ArrayTest2
    { public static void main(String[] args)
    {
    Person[]  person  = new Person[10];//定义一个Person对象数组

    for(int i=0;i<person.length;i++) // 初始化对象数组
    {
       person[i]  = new Person();
     
       //第一个问题,三目运算符后面的两个参数不能是赋值语句,必须是基本数据类型

        String str = i%2 == 0? "www":"http";
         person[i].name = str;

         
       //第二个问题,不知道是不是要实现交替赋值的效果
    //    if(i%2==0)
    //    {
    //    
    //    person[i].name = "www";
    //    
    //    }
    //    else
    //    {
    //    person[i].name = "http";    
    //    }
     
    }
            

    for(int i=0;i<person.length;i++)   //遍历对象数组输出每个对象的name属性
    {
    System.out.println(person[i].name);


    }

    }}
    class Person 
    {
       String name ;
      
    }
      

  4.   

    第一题是正确的。
    第二题,代码稍微奇葩了一点。new Person2[100]并不是创建了一个数组里面有100个Person2对象,而是100个NULL.只不过内存大小是按照Person2开辟的。你怎么可以为NULL.name赋值呢?
    另外,你这个for循环,问题很大,数组总共length是100,当i=100的时候,j是多大了呢?亲。
      

  5.   

    i%2 == 0?(person3[i].name = "www"):(person3[i].name = "http");
    这样试下。
      

  6.   

    在创建p[i]的时候,还没有p[j]和p[k]吧,而且数组也越界了
      

  7.   

    第一个,只能告诉你java是不能那样写的,具体为什么这个要问java的开发者了。javascript和objective c都是支持的,不过objectvie-c需要将后面两个括起来。
    从代码上看person3[i] .name = i%2 == 0?"www":"heep"比i%2 == 0?person3[i].name = "www":person3[i].name = "http" 优雅很多,即使支持后者的写法也优先使用前者,因为后者完全是if else 的概念所以应该选用if else
      

  8.   

    第一题我没有觉得有问题,但是你只给了核心代码,没有上下文,不知道具体报告什么错误
    第二题明显的数值空指针啊,就是越界了啊,你是0-99循环100次,当i=100的时候,p[j]等几个值你算过是多少了么?远远大于100个对象了。
      

  9.   

    第一道题,java中有表达式(expression)与语句(statement)之分。例如:"c = a + b;"是语句,而a + b是表达式。三目运算符格式:expression ? expression : expression;
    第二道题,好比楼主声明要建100层楼,刚建好第一层,就想住第三层,能不空?而且楼主还撕毁声明,企图入住超过100以上的楼层。这个题,即使破天荒没发生空指针异常,接下来也是数组越界异常。