Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中创建一个循环并增加一个索引以用作字符串的一部分?_Java_Variables_For Loop_While Loop_Increment - Fatal编程技术网

如何在Java中创建一个循环并增加一个索引以用作字符串的一部分?

如何在Java中创建一个循环并增加一个索引以用作字符串的一部分?,java,variables,for-loop,while-loop,increment,Java,Variables,For Loop,While Loop,Increment,因此,对于我目前的项目,我目前正在做以下工作: Java代码 ArrayList<Section> aMainSection = new ArrayList<Section>(); Section aSection = new Section(); aSection.setName("Document 1"); aSection.setSection("Section 1"); aSectio

因此,对于我目前的项目,我目前正在做以下工作:

Java代码

        ArrayList<Section> aMainSection = new ArrayList<Section>();
        Section aSection = new Section();
        aSection.setName("Document 1");
        aSection.setSection("Section 1");
        aSection.setText("Text 1");
        Section aSection2 = new Section();
        aSection2.setName("Document 2");
        aSection2.setSection("Section 2");
        aSection2.setText("Text 2");
        Section aSection3 = new Section();
        aSection3.setName("Document 3");
        aSection3.setSection("Section 3");
        aSection3.setText("Text 3");
ArrayList amainstation=new ArrayList();
Section A部分=新部分();
A节.集合名(“文件1”);
A节。设置节(“第1节”);
A节.setText(“文本1”);
Section aSection2=新的Section();
A操作2.设置名称(“文件2”);
A第2条。第2条(“第2条”);
aSection2.setText(“文本2”);
第3节=新的第()节;
A条款3.集合名称(“文件3”);
A第3条。第3条(“第3条”);
aSection3.setText(“文本3”);

但是我想做的是创建一个for循环,当条件满足时,我可以创建一个新的部分。然而,我不知道如何在Java中增加变量。我认为这应该是可能的,但我知道这并不像将整数值连接到变量名的末尾那么简单。任何帮助都将不胜感激,谢谢。

你不能。所有变量必须在编译时显式类型化和已知。使用数组(或一些其他集合,如第一行声明的ArrayList)。

您无法操作Java中变量的名称,因此不可能在每个变量的名称后面附加一个不同的数字时制作一组
字符串。您可以通过使用对实际源代码文本进行操作的预处理器来解决这个问题,但在这种情况下,这是非常不必要的,因为有一个更简单的解决方案

当您需要按顺序创建一大组变量(如节)时,您可以使用
ArrayList
这样的集合来存储它们并按编号访问它们:

    ArrayList<Section> aMainSection = new ArrayList<Section>();
    int NumberOfTimesYouWantToIncrement = 2;

    for (int i=1; i<NumberOfTimesYouWantToIncrement; i++) {
    Section aSection = new Section();
    aSection.setName("Document + i );
    aSection.setSection("Section" + i );
    aSection.setText("Text" + i );
    aMainSection.add( aSection ); //assuming your MainSection is supposed to contain the other sections
    }
这比操作变量名要简单得多,因为它可以让您更轻松地创建和存储它们。考虑一下,如果需要在200个不同变量中创建200个部分,然后在需要循环时按名称再次提及所有部分,您必须做什么:试试这个:

for (int i=1; i<4; ++i) {
    Section aSection = new Section();
    aSection.setName("Document " + i);
    aSection.setSection("Section " +i );
    aSection.setText("Text " +i);
}

for(int i=1;i是的,在Java中可以增加变量。它甚至有一个特殊的操作符:++。

final ArrayList list=new ArrayList(100);
final ArrayList<Section> list = new ArrayList<Section>(100);
for (int = 0; i < 100; i++)
{
    final Section s = new Section();
    s.setName(String.format("Document %d", i));
    s.setSection(String.format("Section %d", i));
    s.setText(String.format("Text %d", i));
    list.add(s);
 }
对于(int=0;i<100;i++) { 最终截面s=新截面(); s、 setName(String.format(“文档%d”,i)); s、 setSection(String.format(“第%d节,i)); s、 setText(String.format(“文本%d”,i)); 列表。添加(s); }

创建并添加100个分区。

您想做什么?只创建几个分区

ArrayList<Section> aMainSection = new ArrayList<Section>();
int sectionsCount = 3;
for (int i=1; i<=sectionsCount; i++)
{
  Section aSection = new Section();
  aSection.setName("Document " + i);
  aSection.setSection("Section " + i);
  aSection.setText("Text " + i);
  aMainSection.add(aSection);
}
ArrayList amainstation=new ArrayList();
int sectionsCount=3;

对于(int i=1;i而言,听起来您希望这样做:

ArrayList<Section> aMainSection = new ArrayList<Section>();
for(int i = 0; i < 3; i++)
{
    Section aSection = new Section();
    aSection.setName("Document "+(i+1));
    aSection.setSection("Section "+(i+1));
    aSection.setText("Text "+(i+1));
    aMainSection.Add(aSection);
}
ArrayList amainstation=new ArrayList();
对于(int i=0;i<3;i++)
{
Section A部分=新部分();
setName(“文档”+(i+1));
A节.集合节(“节”+(i+1));
setText(“文本”+(i+1));
a添加(aSection);
}
如果您不知道在手之前要做多少次,请尝试以下方法:

ArrayList<Section> aMainSection = new ArrayList<Section>();
int sectionNumber = 1;
boolean done = false;
while(!done)
{
    Section aSection = new Section();
    aSection.setName("Document "+ sectionNumber);
    aSection.setSection("Section "+ sectionNumber);
    aSection.setText("Text "+ sectionNumber);
    aMainSection.Add(aSection);

    sectionNumber++;
    done = <put something interesting here>
}
ArrayList amainstation=new ArrayList();
int sectionNumber=1;
布尔完成=假;
而(!完成)
{
Section A部分=新部分();
A节.集合名(“文件”+节号);
A节.设置节(“节”+节号);
aSection.setText(“文本”+节号);
a添加(aSection);
sectionNumber++;
完成=
}

除了生成和编译代码(这是可能的,但我99%肯定你不想去那里),没有办法完全按照你的要求去做。但我不相信你真的需要按照你的要求去做

考虑一下……稍后您打算如何处理变量asecont2、asecont3、asecont974……如果不生成相应的代码来使用它们,您就不能使用它们


很多其他受访者都有建议,所以应该使用集合。

我们通常使用列表。
列表
,然后添加到列表中。这样做有什么不对?我不确定“增量”这里的术语是正确的。一般来说,这意味着向某个对象添加一些值。是否要根据条件向“aSecurity”变量添加另一个“Section”?增加变量?例如:int i=0;i++;for(int i=0;ii=1
开始呢D@CrazyJugglerDrummer这是一个很好的观点。听起来询问者相当缺乏经验。我想确保他们的第一次曝光是相当标准的。这样,当他们到达阵列时,他们将更有可能使用正确的索引约定。@Waylon确实如此k喜欢我正在尝试做的事情,但是如果我不知道我准备添加的节的确切数量,该怎么办?@这样,你就可以用一个int变量替换
3
,该变量包含你想要的节的确切数量。你甚至可以创建一个方法来执行此操作,并每次将节的数量作为参数传递进来:D@Th在这种情况下,您需要一段时间。我将用一个来更新我的答案。他们希望了解变量名的递增,而不是整数的递增。这很有帮助,但离实际回答问题还差得远
ArrayList<Section> aMainSection = new ArrayList<Section>();
int sectionNumber = 1;
boolean done = false;
while(!done)
{
    Section aSection = new Section();
    aSection.setName("Document "+ sectionNumber);
    aSection.setSection("Section "+ sectionNumber);
    aSection.setText("Text "+ sectionNumber);
    aMainSection.Add(aSection);

    sectionNumber++;
    done = <put something interesting here>
}