当前位置:  开发笔记 > 编程语言 > 正文

Java的.对象数组

如何解决《Java的.对象数组》经验,为你挑选了1个好方法。

问题是:我有一个代码

public class Component {
public Component() {
// TODO Auto-generated constructor stub
 }
 public double[] Shifts ;
 public double[][] Couplings ;

}

public class Decouplage {
 public Decouplage(double[] GroupShifts, double[][] GroupCoup) {
  AllComponents = new Component(); 
  AllComponents.Shifts = GetShifts(...blah-blah-bla...);
  AllComponents.Couplings = GetGouplings(...blah-blah-bla...);
 }

public Component AllComponents ; 
}

有用.但是当我尝试创建这个类Component的数组AllComponents [10]时

 public class Decouplage {
 public Decouplage(double[] GroupShifts, double[][] GroupCoup) {
  AllComponents = new Component()[nComponents]; /////HOW MUST I PUT IN ONE LINE THE NUMBER OF ELEMENTS AND THE () FOR CONSTRUCTOR????
  for (int iCounter=0;iCounter

它没有copmile.

但如果我忽略了construstor的()

public class Decouplage {
 public Decouplage(double[] GroupShifts, double[][] GroupCoup) {
  AllComponents = new Component[nComponents]; /////IS IT LEGAL TO IGNORE CONSTRUCTOR, EVEN IF IT IS EMPTY????
  for (int iCounter=0;iCounter

它不能解决换档和联轴器作为一个领域......

你有什么建议吗?注意:GetShifts()与标准Java的getShift()没有任何关系.这是我自己的,它运作良好,我检查.

感谢名单!



1> Jon Skeet..:

这里有两个独立的概念:创建引用数组,以及创建类的实例.所以这一行:

AllComponents = new Component[nComponents]

将创建一个Component引用数组.最初,所有引用都将为null.如果你想用新实例的引用填充它,你必须遵循以下行:

for (int i = 0; i < nComponents; i++)
{
    AllComponents[i] = new Component();
}

编辑:要回复评论,AllComponents是一个数组 - 它没有Shifts或的概念Couplings.如果需要为新组件设置班次或耦合,则应使用以下任一方法:

for (int i = 0; i < nComponents; i++)
{
    AllComponents[i] = new Component();
    AllComponents[i].Shifts = // Code here
    AllComponents[i].Couplings = // Code here
}

要么

for (int i = 0; i < nComponents; i++)
{
    Component component = new Component();
    component.Shifts = // Code here
    component.Couplings = // Code here
    AllComponents[i] = component;
}

或者向构造函数添加参数以进行Component移位和耦合.

顺便说一下,我假设你是Java的新手,而且目前只想要解决这个特定问题的帮助 - 当你准备继续前进时,值得看看Java编码惯例,并封装你的数据更加健壮.(使用公共变量通常是一个坏主意.)

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有