Java строки строки и целочисленные функции не работают - PullRequest
0 голосов
/ 27 марта 2012

Привет, я не уверен, что это проблема с Eclipse или Java, но недавно мой код перестал работать. Я только изменил такие вещи, как назначение новых переменных для хранения вещей. Моя программа принимает многомерный массив строк и должна возвращать новый массив, обрезанный до нуля.

public void makebuttons(final int n, String equals) {
    //does lots of widget functions and id assignments
    String[] items=getArray(Integer.parseInt(data.equnits.substring(n*3, n*3+1)));
    unitvalues[n]=Integer.parseInt(data.equnits.substring(n*3, n*3+1));
    ArrayAdapter aa = new ArrayAdapter(this,android.R.layout.simple_spinner_item, items);
    //does more code
}
public static String[] getArray(int selection) {
    String[] result;//stores the new array
    int x=0,j=0 ,ulength = data.units[0].length;//ints used
    String temp="";
    while(j < ulength && temp!=null) {
        temp= data.units[selection][j][0];    //find the actual array length
        j++;
    }
    if(j==ulength)j--;
    result = new String[j+1];//initalise array from check
    for(x=0; x<=j; x++) { //add data to array
        result[x]=data.units[selection][x][0];
    }
    return result;//return corrected array
}

Integer.parseInt и Integer.valueOf каждый раз дают значение 0 для строки типа "01,02,03,04" data.equnits хранит строку, которая должна быть преобразована в целое число, проверяя только 2 цифры, чтобы выбрать из большого 3-х мерный массив. Поскольку это трехмерный массив, некоторые нули присутствуют

Нулевая проверка для String, похоже, не работает, поскольку цикл while, похоже, не обнаруживает его и оказывается в массиве, который передается в адаптер массива для спиннера, вызывая NullPointerException во время прокрутки.

Перезапуск затмения не помогает.

1 Ответ

1 голос
/ 27 марта 2012

Я не могу помочь с вашей первой проблемой без дополнительной информации, но, похоже, проблема с вашей второй:

Подстрока функции имеет значение включительно первого параметра и исключение второго. Поскольку вы добавляете только 1 к n * 3, вы получаете только один символ.

Попробуйте использовать:

substring(n*3, n*3+2)

Изменить:

Добавление обновленного кода из моего комментария выше:

while(j < ulength && temp != null && !temp.isEmpty())
{
   temp = data.units[selection][j];
   j++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...