2013-09-09 2 views
-2

Я новичок в Java, и то, что я пытаюсь сделать:Преобразования элементов String [] сканер объекта

tempTrailerArr является String [] = { «12,0 1,1», «24,51», «34.12», «82.87 231.2 1.1 2.2»}

Каждый элемент tempTrailerArr преобразуется в объект сканера trScan.

Первый двойник каждого элемента в tempTrailerArr должен храниться в Double [], называемом trailerVals.

Таким образом, желаемый результат был бы для tempTrailerArr = {12,0 24,51 34,12 82,87}

Однако приведенный ниже код не прекращается, и я не понимаю, почему?

 for (int j=0; j<tempTrailerArr.length; j++) { 
     Scanner trScan = new Scanner(tempTrailerArr[j]); 
     switch (j) { 
     case 0: 
     case 1: 
     case 2: 
     case 3: this.trailerVals[j] = trScan.nextDouble(); 
       break; 
     } 
    } 
+1

Это заканчивается для меня. –

+1

Он отлично работает для меня. Пожалуйста, отправьте * полный * пример. – arshajii

+0

он тоже работает для меня – EresDev

ответ

0

Вместо того, чтобы «просто передать значение из строки в двойное, после того как вы разделите его», вам нужно использовать Double.parseDouble (String s), чтобы преобразовать строку в double (если вы пошли с этим другим . подход)

String [] tempTrailerArr = {"12.0 1.1", "24.51", "34.12", "82.87 231.2 1.1 2.2"}; 

String [] tempTrailerVals = null; 
double[] trailerVals = new double [tempTrailerArr.length]; 

for (int i = 0 ; i < tempTrailerArr.length ; i ++) 
{ 
    tempTrailerVals = tempTrailerArr[i].split(" "); 
    // you should also add some error handling here - what if we can't convert the value to a double? 
    trailerVals[i] = Double.parseDouble(tempTrailerVals[0]); 

} 
0

Что вы можете сделать, это использовать функцию split и разделить строки на "" (пробел).

Следовательно, вам не нужен сканер, просто введите значение из строки в двойное, после того как вы разделите его.

0

объяснить код:

// loop start : 
for (int j=0; j<tempTrailerArr.length; j++) { 

    // creating a new Scanner object every time this loop starts 
    // this scanner starts scanning the String value received from this element in the array 
    Scanner trScan = new Scanner(tempTrailerArr[j]); 

    // checks for the numerical value of J : 
    switch (j) { 

    // if j == 0, nothing happens, and go for the next case (no break mentioned) 
    case 0: 

    // if j == 1, nothing happens, and go for the next case (no break mentioned) 
    case 1: 

    // if j == 2, nothing happens, and go for the next case (no break mentioned) 
    case 2: 

    // if j == 3 (and this will be true in case 0, case 1, case 2) 
    // trailerVals[j] = next double (if no double was found, an "InputMismatchException will be thrown 
    // to use nextDouble(), first you should check if trScan.hasNextDouble(), 
    // if true, then add double, else do nothing 
    case 3: this.trailerVals[j] = trScan.nextDouble(); 

    // every time j will be less than or equal to 3, it will reach this point 
     break; 
    } 
} 

я объяснил свой код, потому что это был ваш вопрос, но если вы хотите, чтобы разделить массив строк на части, используйте String.split () или использовать цикл (для: каждый) и проверить значение и добавить его в требуемый массив

, пожалуйста, не пытайтесь действовать в этом коде, это не приносит большого труда

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