Увеличение массива и проблемы с i++

Я пытаюсь использовать i++ для хранения определенных частей массива в цикле. Но вместо увеличения на 1 мне действительно нужно увеличить его на 2.

Например:

import java.util.ArrayList;
import java.util.Arrays;
import javax.swing.JOptionPane;

public class PeerTutoring
{
    public static void main(String[] args)
    {
        ArrayList<String> list = new ArrayList<String>();

        int a = 0;
        int b = 1;
        String name, degree;
        String line;
        line = JOptionPane.showInputDialog("Inputs");
        String[] userinput = line.split("\\s+");

        for(int i = 0; i < userinput.length; i++)
        {
            name = userinput[a];
            degree = userinput[b];
            a+=2;
            b+=2;
        }
    }

    public static String sort(String name)
    {
        String tutors = "Tutor List";
        ArrayList<String> names = new ArrayList<String> ();
        names.add(userinput[0]);
        names.add(userinput[2]);
        names.add(userinput[4]);
        names.add(userinput[6]);
        names.add(userinput[8]);
        names.add(userinput[10]);
        names.add(userinput[12]);
        names.add(userinput[14]);
        names.add(userinput[16]);
        names.add(userinput[18]);
    }
}

Я хочу, чтобы a начиналось как 0, а b как 1, а затем каждый раз я хотел бы, чтобы оно увеличивалось на два. (Поскольку имена разделены пробелом), я думаю, мне придется включить что-то вроде userinput[a + 1]. Но я просто хотел знать, есть ли более простой способ.


person Chris    schedule 27.03.2013    source источник


Ответы (2)


for(i=0, i < linesize; i += 2)

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

        int a = 0;
        int b = 1;
        String name, degree;

        for(i=0, i < linesize; i += 2)
        {
            int linesize = line.size();
            String line;
            line = JOptionPane.showInputDialog("Please enter tutor name and 
            their highest earned degree.");
            String[] userinput = line.split("\\s+");
            name = userinput[a];
            degree = userinput[b];
            a++;
            b++;
        }
person RyPope    schedule 27.03.2013
comment
Хорошо, похоже, это работает, однако мой отдельный метод сортировки, похоже, не может найти пользовательские данные. Я думал, отправив имя String, он сможет получить к ним доступ. - person Chris; 28.03.2013
comment
Пожалуйста, объясните подробно, что именно вы пытаетесь сделать, поскольку я немного смущен. Когда вас попросят ввести, он должен следовать синтаксису ‹Имя› ‹степень›, а пробел используется для их разделения. В коде, который вы видите вверху, метод сортировки никогда не вызывается. Кроме того, если бы вы могли выбрать лучший ответ, это также было бы полезно. - person RyPope; 28.03.2013
comment
Мой метод сортировки действительно будет сортировать что угодно (не знаю, почему я его так назвал). Он просто помещает имена (любой другой пользовательский ввод) из массива в список, который будет организован позже. (Я еще ничего не делал со степенями). Я еще ничего не называл, я не верю. Позже я планировал выполнить сортировку (имя), а затем метод неопределенной степени. - person Chris; 28.03.2013
comment
Хорошо. Что ж, просто убедитесь, что при добавлении ввода следует правильный формат. split(\\s+) разбивает строку на две лексемы с помощью символа пробела. - person RyPope; 28.03.2013
comment
Ошибка в том, что мой метод сортировки не находит пользовательские вводы, потому что я не выполнил сортировку (имя); или другая причина? - person Chris; 28.03.2013

Ваши варианты:

i++; i++; (которую вы не можете использовать в конструкции цикла for, так как вам нужен один оператор.)

i += 2;

i = i + 2;

person David Schwartz    schedule 27.03.2013