我正在尝试使用泛型方法返回String值
这是方法调用
System.out.printf("%s", impresionTabulada(arregloEntrada[i]),i);
这是方法
public static <E> String impresionTabulada(E elemento, int indx){
if(indx%4==0)
return String.format("%s\n", elemento);
else
return String.format("%s\t\t", elemento);
}
但编译器抛出此错误
&#34;描述资源路径位置类型方法 impresionTabulada(E,int)中的类型 EJERC18_6_PruebaMetodoGenerico_ImpresionTabulada不适用于 争论 (E)EJERC18_6_PruebaMetodoGenerico_ImpresionTabulada.java / 1 libro de java D&amp; D / CAP18 / com / ejercDietel / Ejercicios第23行Java问题&#34;
我一直在研究这个问题,但我不知道我做错了什么。
提前致谢
答案 0 :(得分:2)
您使用单个参数impresionTabulada(arregloEntrada[i])
调用该方法,但您使用两个参数对其进行了定义。
我假设方法调用应该是:
System.out.printf("%s", impresionTabulada(arregloEntrada[i],i));
答案 1 :(得分:0)
impresionTabulada
String impresionTabulada(E, int)
它包含2个参数,第一个类型为E
,第二个类型为int
。
impresionTabulada
// This is NOT code...this is just a substitution for later!
x = impresionTabulada(arregloEntrada[i]) // Take note that is only taking in 1 parameter - arregloEntrada[i]
你的printf
表达式就是这个......
System.out.printf("%s", x, i); // This `x` is from above
System.out.printf("%s", x , i); // This `x` is from above - expanded
System.out.printf("%s", impresionTabulada(arregloEntrada[i]), i); // This is your bad code!
正如您所看到的,正是您的printf(...)
函数将您想要的参数作为第二个impresionTabulada(...)
参数。
System.out.printf("%s", impresionTabulada(arregloEntrada[i], i) );