Ya he publicado un tema sobre esto, pero es considerablemente (y el tema quedó en suspenso..así que no se puede editar) cambió mi código (he probado lo que uno de los usuarios dijeron en diferentes variaciones, pero no los frijoles). He tratado de ejecutar toMorse, pero a pesar de que compila puedo obtener ninguna salida y un mensaje de error de 'java.lang.ArrayIndexOutOfBoundsException(at projmorsejava:22 and 46)' no estoy seguro de cómo configurar toEnglish, en este punto, he intentado usar el replaceAll, indexOf y valueOf métodos. También he intentado usar plaintextString pero que también no funcionó (puede que se me han aplicado incorrectamente).
Aquí está mi código revisado:

import java.util.Scanner;
public class ProjMorse
{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String[] alpha = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "1", "2", "3", "4", "5", "6", "7", "8",
"9", "0", " " };
String[] dottie = { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.",
"....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.",
"--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-",
"-.--", "--..", ".----", "..---", "...--", "....-", ".....",
"-....", "--...", "---..", "----.", "-----", "|" };
System.out
.println("Enter English to convert from English or Morse to convert from Morse:");
String ans = input.nextLine();
if (ans.equals("English")) {
System.out.println("Please enter the text you would like   to convert to Morse Code: ");
String english = input.nextLine();
char[] translates = (english.toLowerCase()).toCharArray();
System.out.println(toMorse(translates, dottie)); //calls on method toMorse
}
else if (ans.equals("Morse")) {
System.out
.println("Please enter the text you would like to convert to English (separate words with '|'):");
String code = input.nextLine();
String[] translates = (code.split("[|]", 0));
System.out.println(toEnglish(translates, alpha));//calls on method toEnglish
}
else
System.out.println("Invalid input, please try again.");
}
public static String toMorse(char [] translates, String [] dottie)
{            
String morse = "";
for (int j = 0; j < translates.length; j++)
{
char a = translates[j];
if(Character.isLetter(a))
{
morse = dottie[a + 'a'];
}
}
return morse;/*so I tried running only this(commented other stuff out) and it compiled but although it ran it didnt translate */
}
public static String toEnglish(String [] translates, String  [] alpha)
{
String s;
for (int n = 0; n < translates.length; n++)
{
String a = translates[n];
s = java.util.Arrays.asList(alpha).(Character.toChars(a + 'a')[0]);//I'm not sure what to do here..
}
return s;
}
}
  • Todos estos son muy básicas errores de sintaxis, lo que indica que aún no están listos para hacer frente a algo de esta complejidad. Te recomiendo empezar con un básico de Java tutorial y conseguir todos los ejemplos y ejercicios de trabajo. Usted también debe aprender a usar un IDE como Eclipse o NetBeans. Van a hacer que el aprendizaje de Java mucho más fácil. Usted tiene mucho que aprender, y por desgracia, ASÍ que no es un tutorial en el sitio. Usted también debe mirar a la preguntas frecuentes y Cómo Pedir páginas.
  • Sé que son.. he leído mucho y se ha debido en sólo un par de horas.. he trabajado en él durante días en longitud..muchas Gracias!
  • Lo siento por usted. Si es debido en un par de horas, después de que usted no va a conseguir trabajo, y ASÍ que definitivamente no te ayudará a hacer trampa. Pide ayuda a tu profesor y/o la simpatía. En esta última fecha que se acerca todo lo que puede hacer.
  • He formateado el código un poco para que las líneas de error puede ser ahora no es el mismo. Pero ahora, al menos, todo el mundo puede leer su código sea más fácil.
  • Main.java:18: error: cannot find symbol System.out.println(toMorse(morse)); NO debido a otros errores. Lea el mensaje de error de nuevo. No se ha definido morse. El ^ en la línea debajo de la línea de error de los puntos de exactamente dónde está el error.
  • No estoy tratando de engañar!! Sólo quiero averiguar lo que estoy haciendo mal.. realmente he trabajado muy duro en esto y he intentado conacting mi instructor numerosas veces antes de recurrir a LO que sé que estoy haciendo algún tipo de retorno de error, pero he mirado a través de todos los de mi libro de texto y no sabe exactamente qué está pasando mal..
  • ¿Qué es morse en System.out.println(toMorse(morse));? ¿Qué es s en System.out.println(toEnglish(s));? ¿char[] Han valueOf método? Hay string tipo en Java?
  • Oh, sí he cambiado la cadena de Cuerda en mi programa.. olvidó editar aquí. s y morse son las cadenas de caracteres definidas en los métodos toMorse/toEnglish
  • si usted define la variable dentro del bloque de código, como el de método se convierte en variable local, que no es accesible en otros métodos.
  • Sí, lo sé, pero ¿no sería bueno si vuelvo a la variable?
  • Volviendo método devuelve el valor de la variable, no variable en sí.
  • Ohh creo que entiendo…
  • Para su INFORMACIÓN: si una cuestión es poner [en espera], a continuación, usted puede y debe editar la pregunta a resolver el problema. Si usted hace esto, entonces la restricción puede ser eliminado. No sólo inténtelo de nuevo con una nueva pregunta.
  • Panko, que se trata esto, pero no fue reabierto…y que fue de más de 2 días.. me miró a través de todas las que se publican dentro de las razones y hice mi mejor esfuerzo para revisarlo..

InformationsquelleAutor LongGone | 2014-01-03

2 Comentarios

  1. 1

    Hay varias cosas que no funcionan:

    1. falta inicial public class ... (sospecho que un copiar-pegar de error)
    2. falta import java.util.Scanner; ya que el uso del Escáner
    3. mal llamada toMorse: en primer lugar, dos argumentos son esperadas (marque el método de firma); entonces, el primer argumento es el nombre no es morse (símbolo desconocido), debe ser translates, que sólo ha «creado»! Sobre el segundo: se necesita la matriz de cadenas que tiene en lugar de por ejemplo, la «e» del código morse, por lo que el segundo argumento debe ser… dottie
    4. mal llamada toEnglish: dos argumentos necesarios (marque la firma del método, como se ha hecho antes!!!); la primera, tiene que ser translates, de nuevo (desconocido s, como morse antes)! Sobre el segundo argumento: ver arriba pero por supuesto, ya tiene morse en la entrada, usted necesita la otra matriz.
    5. en toMorse de que usted escoja cada char utilizando translates[j], no valueOf.
    6. del mismo modo, en toEnglish obtener la cadena mediante translates[n]
    7. en tanto toEnglish y toMorse, usted tiene que «acumulan» la cadena convertida en una cadena, y volver a la final, es decir, fuera de los bucles!
    8. tener una cadena, se escoge el char en pos 0 mediante .charAt(0): para realizar una op como x - 'a' x no puede ser una cadena, así que ya tienes una cadena, usted debe obtener su primer char.
    9. Nota: acerca de su uso de morse y s: los nombres de las variables en un método que no tiene nada que ver con los nombres de las variables en el llamador!

    Ejemplo para toMorse:

        String morse = "";
    for (int j = 0; j < translates.length; j++)
    {
    char a = translates[j];
    if(Character.isLetter(a))
    {
    morse += dottie[a - 'a'];
    }
    }
    return morse;  //this symbol is unknown to the caller

    Se le llama con algo tan simple como

                  System.out.println(toMorse(translates, dottie));

    La corrección para toEnglish es muy similar (a pesar de su código original no funciona), espero que puedas hacerlo por ti mismo.

    Creo que es todo, más o menos.

    Sugerencia para solucionar toEnglish:

    Para cada cadena tiene en su translates matriz, se tiene que buscar en dottie matriz de cadena con el fin de buscar esa secuencia en particular de puntos y líneas.

    Si la encuentra, la posición (índice) se encuentran en el, es también el índice de la derecha la letra que usted tenga en el alpha matriz. Así que usted puede ser que necesite para añadir que la matriz como argumento y utilizar el índice para recoger la carta.

    O, más bien, puede usar el mismo «truco» se utiliza para toMorse y mantener la toEnglish firma de método sin cambios: una vez que usted tiene el índice, ya que se han encontrado, puede «invertir» el algoritmo de codificación, así que tienes que añadir 'a' a que el índice (entero) para obtener el código de la letra.

    Usted puede usar algo como Character.toChars(k + 'a')[0] a tomar el char que desea agregar a la «acumulación de cadena», siendo k el índice.

    El engorroso notación Character.toChars(k + 'a')[0] es ya, de hecho, Character.toChars devuelve un array, así que empezamos el primer elemento de la matriz, que es el char que necesitamos.

    • Gracias, definitivamente, voy a mirar en esto(:
    • Debo explicar algún punto más, pero se siente perezoso sobre ella. Es importante concentrarse en sus errores y tratar de preguntarse a sí mismo si no hay ningún tipo de conocimiento se olvida de hacer lo correcto. E. g. ¿por qué usted piensa que usted necesitaba algo como valueOf?
    • Pensé que mediante el uso de valueOf que yo pudiera acceder al valor correspondiente en el índice de la matriz y la cambian.. Aún así, que originalmente se trató de usar el «replceAll» método pero que no funciona tampoco.
    • valueOf es un método estático en la Cadena, y se utiliza para obtener una representación de cadena de un valor. Aquí tienes un array de caracteres o cadenas de caracteres, y sólo tienes que elegir el correcto valor que está en la posición relevante (índice) que «calcular». Asegúrese de obtener cómo la toMorse y toEnglish bucles de trabajo! – de hecho estoy notando ahora que toEnglish probablemente no funcionará
    • por lo tanto para corregir mis errores que debo usar indexOf? También traté de que..no funcionó. sí, me doy cuenta de que. Traté de algo a lo largo de las líneas de este(por ambos métodos): plaintextString.replaceAll(c, dottie[characterIndex]); characterIndex++; esto tampoco funcionó..
    • sería algo como esto ser la llamada correcta para toMorse char [] se traduce = new char(toMorse(dottie[morse]); o sería traduce = new char(toMorse(se traduce[(dottie[morse])]);
    • usted puede utilizar java.util.Arrays.asList(dottie).indexOf(a), consulte este o este. replaceAll no encontrará fácilmente lo que usted desea. Llame toMorse como… ir a la mod de la ans…
    • va a mod la respuesta?? ¿A qué te refieres?
    • que he modificado mi respuesta ligeramente para responder a su última pregunta en tu último comentario.
    • Gracias de nuevo, voy a ver qué puedo hacer(: y si no te funciona, te voy a estar aquí, ¿verdad?
    • También, no me llaman alfa en toEnglish? simplemente asegurarse de que..
    • He ampliado un poco la respuesta con el fin de abordar este último Q demasiado… Y prometo que es la última edición: realmente demasiado tarde para mantener la concentración!!
    • java.util.Arrays.asList(dottie).indexOf(a) que esto sería simplemente obtener el índice de dottie en una?
    • se le dará el índice en el que la cadena de caracteres equivalente a una se encuentra en la matriz. si la cadena no se encuentra en la matriz, el índice será negativa (-1).
    • ¿Tengo que volver morse y s?
    • por supuesto que sí!! Elige tu libro o clases de notas y comprobar las páginas acerca de la función/método de llamadas, devolución de valores y así sucesivamente!
    • pero a pesar de que me los devuelva, que no va a ninguna parte?.. como mi método de las llamadas se traduce y el otro correspondiente de la matriz? también, este debería ser mi declaración para toEnglish, ¿correcto?: alpha.Character.toChars(a + 'a')[0]
    • cuando intento compilar no se puede encontrar «morse» a cambio morse.. String morse = dottie[a + 'a']; } } return morse;
    • usted no puede utilizar sumbol morse fuera de su alcance, delimitado por las envolventes {}. Si usted mira el fragmento que te dio la respuesta, es que yo ponga String morse = "" exterior, por lo que se ve al final, cuando tenga que volver. Le falta un conocimiento muy básico! Le sugiero que deje un momento de la escritura de código y volver a un poco de la teoría de los libros y lecciones de notas, lo que usted tiene!
    • Oh, veo que ahora, debo haber saltado sobre él, bueno, ahora entiendo..sí, es sólo una variable local … Gracias de todo se hace un poco más de sentido.. yo todavía no estoy seguro de cómo implementar Carácter.toChars en alfa.. Gracias de nuevo y perdón por todas las preguntas.
    • iba a hacer algo como alfa[Caracteres.toChars]? He probado muchas diferentes variaciones en vano.
    • He intentado correr sólo el toMorse parte y compilado pero no se da ninguna salida..
    • En este punto no está claro lo que estás tratando de ejecutar. El código, con las correcciones, si se han aplicado correctamente, funciona (solo he ejecutarlo con English, SOS como entrada, la obtención de ...---... como de salida). Una vez toMorse devuelve la cadena, por supuesto, usted necesita para una salida de fin de ver nada.
    • no mi salida sólo se System.out.println(toMorse(translates, dottie)) ? también mi código aquí ha sido actualizado a la versión actual..
    • es. Así? Tal vez hice algo mal?
    • Bueno, funcionó, pero no está poniendo en un » | » para los espacios al traducir a morse y al traducir al inglés, donde hay un ‘|’ no agregar un espacio(no es la división de la cadena de suficiente agregar el espacio?)..
    • si usted no es capaz de añadir algunos | en toMorse de salida, o espacios en toEnglish… lo siento, pero me doy por vencido: me gustaría decir que tengo que completar todos los ejercicios para usted, en todos sus detalles, y sería injusto que yo ya he hecho más de lo imaginable, el resto debe será hecho por usted.
    • Eso es cierto..voy a averiguar. Muchas gracias por toda su ayuda(: realmente me ha ayudado, no sólo con la programación, pero la comprensión de cómo la medida de las pequeñas cosas pueden ir(: Y que no siempre tiene que ser tan complicado.

  2. 0

    Su importante trabajar estos errores por sí mismo para aprender la necesaria depuración de las habilidades de programación que requiere. Esto probablemente no es lo que usted está buscando, pero:

    1. Siempre comienzan en el primer error y su forma de trabajo hacia abajo en la lista.
    2. Cuando encuentre un mensaje de error y no sé qué diablos está pasando mal echar un vistazo a algunos ejemplos de código. Buscar "java how to (enter what your trying to do here)" el es un montón de información hacia fuera allí. A la hora de elegir de búsqueda, asegúrese de que usted se descomponen a su forma más básica, tales como "java how to convert integer to string"
    3. Utilizar un IDE, se puede tomar un poco acostumbrarse, pero será bien vale la pena la inversión. Hay un aspecto sencillo, uno llamado http://www.jedit.org/ podría ser hasta su callejón
    • Gracias, en realidad me han estado haciendo eso y tamizar a través de los textos y el índice (literal índice :)) pero no he sido capaz de averiguar. Realmente aprecio su tiempo y esfuerzo(:

Dejar respuesta

Please enter your comment!
Please enter your name here