簡體   English   中英

如何在 Java 中創建循環並增加索引以用作字符串的一部分?

[英]How Do I Create a Loop in Java and Increment an Index to Use As Part of a String?

所以對於我目前的程序,我目前正在這樣做:

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");

但是我想要做的是創建一個 for 循環,當滿足條件時,我可以創建一個新的部分。 但是,我不知道如何增加 Java 中的變量。 我認為它應該是可能的,但我知道這並不像將 integer 值連接到變量名的末尾那么簡單。 任何幫助將不勝感激,謝謝。

不能在 Java 中操縱變量的名稱,因此不可能做一些事情,比如制作一堆String ,其中每個變量的名稱都附加了不同的數字。 您可以通過使用對實際源代碼文本進行操作的預處理器來解決這個問題,但在這種情況下,這是非常不必要的,因為有一個更簡單的解決方案。

當您需要像您的部分一樣按順序創建一大組變量時,您可以使用像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
    }

這將為您創建一個Section的 ArrayList<> ,然后您可以遍歷它以獲取您創建的不同部分:

for (Section i: aMainSection) {
    //do something with that section
}

這比操作變量名要簡單得多,因為它可以讓您更輕松地創建和存儲它們。 想一想如果您需要在 200 個不同的變量中創建 200 個部分,然后在您想循環訪問它們時再次按名稱提及所有這些部分,您需要做什么。 :D

試試這個:

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

是的,在 Java 中,您可以增加變量。 甚至還有一個特殊的運算符:++。

聽起來你想這樣做:

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<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>
}
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);
 }

創建並添加 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);
}

缺少生成和編譯代碼(這是可能的,但我 99% 確定你不想在 go 那里)沒有辦法完全按照你的要求去做。 但我不相信你真的需要你所要求的。

考慮一下...稍后您打算如何處理變量 aSection2、aSection3...aSection974...。 如果不生成相應的代碼來使用它們,就無法使用它們。

而是使用 collections,因為許多其他受訪者有建議。

你不能。 所有變量都必須在編譯時顯式鍵入並已知。 使用數組(或其他一些集合,例如您在第一行聲明的 ArrayList)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM