FALLO: Double cannot be converted to String
Publicado por Clavillo (5 intervenciones) el 23/12/2020 10:33:34
Hola buenos días, un saludo a todos.
Tengo la siguiente tarea que hacer:
1. Crea un interface Supplier para que recoja un decimal por pantalla.
2. Crea un interface Function para decimales para calcular la función
(seno(x)2 + cos(x) 3)/5.
3. Crea un interface Function cifrasNumero para decimales que nos devuelva un entero con el número de cifras enteras tiene un número con la instrucción do While.
4. Crear un Consumer escribePantalla que escriba por pantalla los resultados. Recibirá un <String> como entrada.
El resultado de la ejecución sería:
Escriba un número decimal por pantalla
2456
El resultado de aplicar la función trigonométrica al numero 2456.0 es 0.17180821904080595
El numero total de cifras del numero 2456.0 es 4
El código que he realizado para ello es el siguiente:
Pero me sale el fallo del título, y no entiendo bien porqué ya que en todo caso debería decirme que INTEGER cannot be converted to String, he intentado la conversión mediante String.valueOf() pero no he debido hacerlo bien porque no me ha funcionado.
Por otro lado, la función de contar las cifras del número ingresado tampoco está funcionando correctamente y ya no sé muy bien por dónde tirar ni qué corregir.
Agradecería cualquier ayuda, gracias.
Tengo la siguiente tarea que hacer:
1. Crea un interface Supplier para que recoja un decimal por pantalla.
2. Crea un interface Function para decimales para calcular la función
(seno(x)2 + cos(x) 3)/5.
3. Crea un interface Function cifrasNumero para decimales que nos devuelva un entero con el número de cifras enteras tiene un número con la instrucción do While.
4. Crear un Consumer escribePantalla que escriba por pantalla los resultados. Recibirá un <String> como entrada.
El resultado de la ejecución sería:
Escriba un número decimal por pantalla
2456
El resultado de aplicar la función trigonométrica al numero 2456.0 es 0.17180821904080595
El numero total de cifras del numero 2456.0 es 4
El código que he realizado para ello es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package com.mycompany.estructurasdecontrolfuncional;
import java.util.Scanner;
import java.util.function.Supplier;
import java.util.function.Consumer;
import java.util.function.Function;
public class Ejercicio5 {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
Supplier <Double> numeroPorPantalla = () ->{
double n;
System.out.println("Escriba un número decimal por pantalla");
n=teclado.nextDouble();
return n;
};
// (seno(x)2 + cos(x) 3)/5;
Function <Double, Double> funcionTrigo = (n) -> Math.sin(Math.pow(n,2.0))+Math.cos(Math.pow(n,3.0))/5;
Function <Double, Integer> cifrasNumero = (n) -> {
int cifras= 0;
while(n >0 ){
n /=10;
cifras++;
}
return cifras;
};
Consumer <String> escribePantalla = (n) -> {
System.out.println("El resultado de aplicar la función trigonométrica al número"+n+" es "+funcionTrigo.apply(numeroPorPantalla.get()));
System.out.println("El número total de cifras del número"+n+" es "+cifrasNumero.apply(numeroPorPantalla.get()));
};
System.out.println(escribePantalla.accept(numeroPorPantalla.get()));
}
}
Pero me sale el fallo del título, y no entiendo bien porqué ya que en todo caso debería decirme que INTEGER cannot be converted to String, he intentado la conversión mediante String.valueOf() pero no he debido hacerlo bien porque no me ha funcionado.
Por otro lado, la función de contar las cifras del número ingresado tampoco está funcionando correctamente y ya no sé muy bien por dónde tirar ni qué corregir.
Agradecería cualquier ayuda, gracias.
Valora esta pregunta


0