2016-01-26 2 views
0

У меня возникли проблемы с моим кодом. Я пытаюсь преобразовать String в char ArrayList, используя метод .add для arraylists. Однако я получаю следующую ошибкуПреобразование строки в массивList с использованием .add

Метод дополнения (интермедиат, String) в типа ArrayList не применяется для аргументов (INT, символ)

Может кто-нибудь сказать мне, где я пошло не так с кодом , или указать мне в правильном направлении?

import java.util.ArrayList; 
import java.util.Arrays; 

public class Benford { 

    public static void main(String args[]){ 
     //countDigits(123456); 
     nthDigitBack(12,359938); 
    } 

    public static int countDigits(double inNum){ 
     double result = Math.log(inNum)/Math.log(10); 
     result = (int) (Math.ceil(result)); 
     System.out.println(result); 
     return (int) result; 

    } 
    public static int nthDigitBack(int n, int num){ 
     System.out.println(countDigits(num)); 

     //convert num to string 
     String transferToArray = Integer.toString(num); 
     //create character array 
     ArrayList<String> charArray = new ArrayList<String>(); 
     //convert string to Array 
     for(int i = 0; i < countDigits(num); i++){ 
      charArray.add(i, transferToArray.charAt(i)); 
     } 


     return 1; 
    } 

} 

ответ

0

У вас есть ArrayList, который принимает строку:

ArrayList<String> charArray = new ArrayList<String>(); 

Но вы назвали его charArray, а затем вы пытаетесь добавить символы к нему. Либо вы должны сделать свой список в список символов (обертка вокруг примитивного символа), либо изменить метод добавления для добавления String.

Вариант 1:

//create character array 
ArrayList<Character> charArray = new ArrayList<Character>(); 
//convert string to Array 
for(int i = 0; i < countDigits(num); i++){ 
    charArray.add(i, transferToArray.charAt(i)); 
} 

Вариант 2: Произошла

//create character array 
ArrayList<String> stringArray = new ArrayList<String>(); 
//convert string to Array 
for(int i = 0; i < countDigits(num); i++){ 
    stringArray.add(i, ""+transferToArray.charAt(i)); 
} 
0

в методе ошибки nthDigitBack на

charArray.add (я, transferToArray.charAt (я));

, поскольку вы пытаетесь добавить тип данных Chracter в массив строк. вам разрешено добавлять только тип данных String в charArray.

Изменение charArray в

ArrayList<Character> charArray = new ArrayList<Character>(); 
0

Вы можете попробовать следующее вместо этого?

charArray.add(i, transferToArray.substring(i, i+1)); 
Смежные вопросы