Foram encontrados 3 erros ao compilar o programa LamdaArgumentDemo.java:
LambdaArgumentDemo.java:30: error: ‘.class’ expected
For(int i = str.lenth()-1; i >= 0; i–)
---------^
LambdaArgumentDemo.java:30: error: not a statement
For(int i = str.lenth()-1; i >= 0; i–)
---------------------------------^
LambdaArgumentDemo.java:30: error: ‘;’ expected
For(int i = str.lenth()-1; i >= 0; i-- )
----------------------------------------- ^
Abaixo está a listagem completa do programa e a tela de compilação. Não consigo encontrar o motivo para estes erros acontecerem. Agradeço o auxilio.
Atenciosamente,
Ronaldo
// Usa uma expressÆo lambda como argumento de um método.
interface StringFunc {
String func(String str);
}
class LambdaArgumentDemo {
// Este m‚todo tem uma interface funcional como tipo de seu
// primeiro parƒmetro. Logo, pode receber uma referˆncia a
// qualquer instƒncia dessa interface, inclusive uma instƒncia
// criada por uma expressÆo lambda. O segundo parƒmetro
// especifica o string a ser alterado.
static String changeStr(StringFunc sf, String s) {
return sf.func(s);
}
public static void main(String args[])
{
String inStr = "Lambda Expressions Expand Java";
String outStr;
System.out.println("Here is input string: " + inStr);
// Define uma expressÆo lambda que inverte o conte£do de um
// string e a atribui a uma vari vel de referˆncia StringFunc.
StringFunc reverse = (str) -> {
String result = "";
For(int i = str.length()-1; i >= 0; i-- )
result += str.charAt(i);
return result;
};
// Passa reverse como primeiro argumento de changeStr().
// Passa p string de entrada como segundo argumento.
outStr = changeStr(reverse, inStr);
System.out.println("The string with spaces replaced: " + outStr);
// Esta expressão lambda substitui espaços por hifens.
// Passa o string de entrada como segundo argumento.
outStr = changeStr((str) -> {
String result = "";
char ch;
for(int i = 0; i < str.length(); i++) {
ch = str.charAt(i);
if(Character.isUpperCase(ch))
result += Character.toLowerCase(ch);
else
result += Character.toUpperCase(ch);
}
return result;
}, inStr);
System.out.println("The string in reversed case: " + outStr);
}
}