Aprendiendo Java, no puedo encontrar el símbolo

Escríbelo así:

s.length() == 0 // it's a method, not an attribute
Respuesta 1

Algunas sugerencias generales de 'buena codificación':

  • Los nombres de clase deben representar una 'cosa', generalmente un nombre de clase es un sustantivo (por ejemplo, "StringTool")
  • Los métodos deben representar una acción, generalmente un nombre de método es un verbo (por ejemplo, "revertir")
  • Los nombres de parámetros y variables deben ser significativos y describir lo que representan.
  • No debe reasignar los parámetros del método porque puede ser engañoso.
  • Un método debe tener exactamente una responsabilidad (por lo tanto, no invertir e imprimir una cadena). Esto promueve la claridad y la reutilización.

He aplicado estas sugerencias a su código terminado, vea a continuación:

public class StringTool {

    public static String reverse(String source) {

        // stop condition of the recursion
        if (source.isEmpty()) {
            return "";
        }

        int lastPosition = source.length() - 1;
        String lastCharacter = source.charAt(lastPosition);
        String restOfSource = source.substring(0, lastPosition);

        // place the last character at the beginning and reverse the rest 
        // of the source recursively
        return lastCharacter + reverse(restOfSource);
    }

    // test method
    public static void main(String args[]) {
        System.out.println(reverse("A STRING"));
    }

} 
Respuesta: 2

En su declaración if, está asignando 0 a la longitud s en lugar de verificar. hacerlo de esta forma:

if(s.length()==0)
//rest of your code

Otra falla es s.charAt(s.length()). El índice del i-ésimo carácter en una cadena es (i-1), similar a los índices de una matriz. Entonces, el último carácter de la cadena tiene índice (s.length()-1). Entonces reemplace esa línea de código con s.charAt(s.length()-1).

Respuesta: 3

Esto debería reflejar mejor lo que estás tratando de lograr:

class Back {
    void Backwards(String s) {
            if (s.length() == 0) { 
                    System.out.println();
                    return;
            }
            System.out.print(s.charAt(s.length()));
            s = s.substring(0, s.length()-1);
            Backwards(s);
    }
}

public class RTest {
    public static void main(String args[]) {
            Back b = new Back();
            b.Backwards("RAPE APE");
    }
}
  • length () es una función
  • usos de comparación ==
  • Debes instanciar b para usarlo
Respuesta: 4

Olvidaste los paréntesis:

s.length()
Respuesta: 5

lengthes un método , no un atributo Tendrás que usarlo de esa manera:

s.length(); // note the use of parens

Además, tendrá un error de compilación después de corregirlo, debido a la siguiente condición:

if (s.length = 0) { 

Debería ser

if (s.length == 0) { 

Y finalmente, en su mainmétodo, la bvariable tendrá que ser instanciada, usando

Back b = new Back();
Respuesta: 6

En la especificación del lenguaje dice: las variables locales definitivamente se establecen antes de su uso. Si bien todas las demás variables se inicializan automáticamente a un valor predeterminado, el lenguaje de programación Java sí ...

Estoy tratando de llamar a una función de JavaScript almacenada desde el controlador Java MongoDB. He estado siguiendo esta guía para almacenar la función en el servidor DB y puedo llamar a la función desde el mongo ...

¿Es posible que el hilo 2 imprima "x = 0"? int x = 0; boolean bExit = falso; Hilo 1 (no sincronizado) x = 1; bExit = verdadero; Hilo 2 (no sincronizado) si (bExit == true) System.out.println ("x = ...

Esto es lo que necesito hacer. Capacidad para revertir el contenido de una matriz dimensional única de tamaño variable, sin utilizar otra matriz temporal. Dada una matriz dimensional única de enteros, números, ...