Erro ao compilar um arquivo java com expressão lambda

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);
	}
}

For é for (f minúsculo). Não é problema com o lambda. Veja o erro “not a statement” (não é uma instrução).

4 curtidas