2014-02-10 5 views
0

Итак, у меня есть массив с именем arr со значениями &&&&.&&. Я хочу найти количество амперсандов (&), которые после десятичной точки и сохранить значение в numDecimalDigits.Получение значений из массива

int numDecimalDigits = 0; 

char[] arr = new char[7] 

for (int i = 0; i < str.length(); i ++) 
{ 
    for (int decimal = (arr[pos] = '.'); decimal <= arr.length; decimal ++) 
    { 
     numDecimalDigits += 1; 
    } 
} 

Я не уверен, что это правильный подход. Таким образом, цикл for проходит через каждое значение индекса массива. Внутренний цикл for начинается с десятичной точки и заканчивается в конце массива. Каждый раз, когда новое значение найдено, numDecimalDigits добавляется одним. Однако в моем коде я думаю, что numDecimalDigits возвращает неправильное значение.

+1

Что это должно делать - '(arr [pos] = '.')'? Что он делает, устанавливается arr [pos] на '.' (что угодно * pos *). –

+0

Хорошо, что я пытался сделать, это запустить цикл 'for', где начиналась десятичная точка, и закончить цикл в конце массива. 'pos' является просто коротким для« позиции »(т. е. позиции в массиве) –

+0

Использование indexOf для строки имеет смысл. Или один цикл от 0 до array.length, по сравнению с '.'. (И вы сравниваете для равного с '=='. '=' Is присваивание.) –

ответ

1

Вам нужно всего лишь один цикл:

boolean foundDot = false; 
for (int i = 0; i < arr.length; i++) { 
    if(arr[i] == '.') { 
     foundDot = true; 
    } else if(foundDot) { 
     numDecimalDigits ++; 
    } 
} 
1

Не нужно использовать массив. Было бы легко, как это: (Предполагается, что str значение должно содержит один «.»)

int numDecimalDigits = str.split("\\.")[1].length(); 

Или вы можете сделать путем вычитания str.length()-1 с indexOf(".")

int numDecimalDigits = str.length()-1 - str.indexOf("."); 
+0

Присвоение значения, содержащего хотя бы один '.' ... – MadProgrammer

+0

Не было бы больше смысла использовать indexOf и не беспокоить создание новых строк, которые вам не нужны? –

+0

@HotLicks, на который _new string_ вы имеете в виду? – Baby

Смежные вопросы