2017-01-18 3 views
1

У меня есть метод, которому нужны одиночные значения в качестве ввода, но у меня есть только информация в массиве. Я искал и узнал, что Scanner может передавать значения, но только в строковой форме. Поэтому я решил изменить массив в строку и затем преобразовать его обратно в двойное, прежде чем возвращать значение.Можно ли передавать двойные значения из массива с помощью сканера?

Вот что я написал.

double E; 
    public double StreamValue (double[]g2){ 
     Scanner s = new Scanner(Arrays.toString(g2)); //PROBLEM HERE 
     while (s.hasNext()){ 
      E = Double.parseDouble(s.next()); 
     } 
     return E; 
    } 

Когда я запустил код, он потерпел неудачу. Мой вопрос в том, правильно ли идея, но мне не хватает какой-либо части, или она полностью недействительна?

Отредактировано:

мне нужно кормить значения потоковыми в Methode, которые будут анализировать каждое значение и возвращать Int.

Это своего рода краткий пример этого:

public int EventAnalyzer(double E) { 
 
    if (E > c_max) 
 
     a = 0; 
 
    else 
 
    a = 1; 
 
    return a; 
 
    }
Возвращаемое значение будет использоваться для этого метода:

private void isDetected (int a){ 
 
     CharSequence t0 = "No breathing"; 
 
     CharSequence t1 = "Normal breathing"; 
 
     TextView textView = (TextView)findViewById(R.id.apnea); 
 

 
     if(a==0) 
 
      textView.setText(t0); 
 
     if(a==1) 
 
      textView.setText(t1); 
 
     
 
    }

+0

Не могли бы вы указать, что вы пытаетесь достичь? – Bambino

+0

Это совершенно недействительно. Нет больше зла, чем toString() и обратно. Кроме того, ваша функция не возвращается, не передает ничего и анализирует весь массив, чтобы получить последнее значение, тогда как вы можете напрямую обращаться к последнему элементу в массиве. –

+0

@ Александр Аникин, я вижу это сейчас. Любая идея, я могу достичь результата, который мне нужен? –

ответ

0

@Alexander Аникин ответил на вопрос в комментарии. Я работаю над Arrays.stream, но для этого требуется API 24, в то время как у меня есть API 19. Я ищу другой способ. Спасибо всем за ответы!

0

Ваша цель не полностью ясен для меня, но , если вы h пр double[] g2:

Вы можете использовать расширенный for -loop:

for(double d : g2) 
    System.out.println("This is a double from array: "+ d); 

Если вам необходимо вернуть один дубль из массива, то вы можете получить его с помощью индекса, делая

return g2[x]; 

где x - действительный индекс между 0 и g2.length - 1.

0

Думаю, ваша идея права.

Но ваш результат E должен быть массив двойной:

double[] E; 
Смежные вопросы