Как создать цикл в Java и увеличить индекс для использования в качестве части строки? - PullRequest
0 голосов
/ 07 июля 2011

Итак, для моей текущей программы я сейчас делаю это:

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. Я бы предположил, что это как-то возможно, но я знаю, что это не так просто, как объединение целочисленного значения в конец имени переменной. Буду признателен за любую помощь, спасибо.

Ответы [ 8 ]

2 голосов
/ 07 июля 2011

Звучит так, будто вы хотите это сделать:

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>
}
2 голосов
/ 07 июля 2011

Да, в Java вы можете увеличивать переменные. Для этого есть даже специальный оператор: ++.

2 голосов
/ 07 июля 2011

Попробуйте это:

for (int i=1; i<4; ++i) {
    Section aSection = new Section();
    aSection.setName("Document " + i);
    aSection.setSection("Section " +i );
    aSection.setText("Text " +i);
}
2 голосов
/ 07 июля 2011

Вы не можете манипулировать именами переменных в 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
    }

Это создаст ArrayList <> из Section s для вас, что вы можетезатем выполните итерацию, чтобы получить различные разделы, которые вы создали:

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

Это гораздо менее громоздко, чем манипулирование именами переменных, поскольку позволяет создавать и хранить их гораздо проще.Подумайте о том, что вам нужно сделать, если вам нужно создать 200 секций в 200 различных переменных, а затем упомянуть все из них по имени снова, когда вы захотите просмотреть их.: D

1 голос
/ 07 июля 2011

За исключением генерации и компиляции кода (что возможно, но я на 99% уверен, что вы не хотите туда идти), нет способа сделать именно то, что вы просили.Но я не верю, что вам действительно нужно то, что вы просите.

Учтите это ... что вы планировали делать с переменными aSection2, aSection3 ... aSection974 ... позже.Вы не можете использовать их, не генерируя соответствующий код для их использования.

Вместо этого используйте коллекции, как и многие другие респонденты, у которых есть предложения.

1 голос
/ 07 июля 2011

Что вы хотите сделать? Просто создайте несколько разделов из вас?

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);
}
1 голос
/ 07 июля 2011
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 разделов.

0 голосов
/ 07 июля 2011

Вы не можете. Все переменные должны быть явно напечатаны и известны во время компиляции. Используйте массив (или другую коллекцию, такую ​​как ArrayList, который вы объявляете в первой строке).

...