Строка не может быть преобразована в двойной [] - PullRequest
0 голосов
/ 23 мая 2019
error: incompatible types: String cannot be converted to double[]
      polyval = usrIn.nextLine();
                              ^
1 error

Почему это не работает?что я делаю не так?

import java.util.Scanner; 

public class MainApp
{
   public static void main(String[] args){

      Scanner usrIn = new Scanner(System.in);
      double aval, bval, cval;

      System.out.println("Please enter infromation for three polynomials of type ax^2+bx+c.");

      System.out.println("Enter a, b, and c for polynomial 1:");

      double[] polyval = new double[3];
      polyval = usrIn.nextLine();

      System.out.println("Enter a, b, and c for polynomial 2:");
      double[] polyval2 = new double[3];
      //polyval2 = usrIn.nextLine();

      System.out.println("Enter a, b, and c for polynomial 3:");
      double[] polyval3 = new double[3];
      //polyval3 = usrIn.nextLine();
      System.out.println("Enter a, b, and c for polynomial 3:"
                         +"\t1. Print All Polynomials"
                         +"\t2.  Add Two Polynomials"
                         +"\t3. Factor Using Quadratic Formula"
                         +"\t4. Update a Polynomial"
                         +"\t5. Find Largest Polynomial"
                         +"\t6. Enter X and Solve"
                         +"\t7. Clear All Polynomials"
                         +"\t8. Exit the Program");
     }

}
  double[] polyval = new double[3];
  polyval = usrIn.nextLine();

Как мне это исправить

 error: incompatible types: String cannot be converted to double[]         
 polyval = usrIn.nextLine();
                             ^    
1 error

1 Ответ

0 голосов
/ 23 мая 2019

usrIn.nextLine() вернет строку. Если вы хотите преобразовать это в double [], вам нужно сначала проанализировать строку в массив, используя split, предположительно, на space (при условии, что вы вводите именно так). Затем для каждого String представления числа вам нужно будет преобразовать его в double

    double[] polyval = new double[3];
    String[] nextLine = usrIn.nextLine().split(" ");

    for (int i = 0; i < nextLine.length; i++) {
      polyval[i] = Double.parseDouble(nextLine[i]);
    }

OR

    double[] polyval = new double[3];
    polyval = Arrays.stream(usrIn.nextLine().split(" ")).mapToDouble(Double::parseDouble).toArray();

Ни одно из этих решений не учитывает неверный ввод, поэтому вам нужно добавить несколько проверок, чтобы убедиться, что ввод в формате, который является приемлемым

например:

перед циклом for, вы можете добавить проверку

if (nextLine.length != 3) {
    System.out.println("input should have length of 3");
    System.exit(1);
} 
...