Agregar excepcion Try y Catch

Cree un programa que solicite una frase por teclado y muestre en pantalla la posición del carácter que tiene un valor ASCII mayor. El programa debe validar que la frase escrita por el usuario no tenga alguno de los siguientes símbolos: $, & o #. En caso de presentarse alguno de dichos símbolos el programa debe mostrar un mensaje de error y terminar su ejecución

Es el programa a elaborar y tengo esto realizado:

package errores2;

public class ascii {
  String cadena;
  private int i;

  public void splitcadena(){

    try{
      for(int i=0;i<cadena.length();i++){
        int as=cadena.charAt(i);
      }
    } catch(Exception a){
      // catch error a
    }
  }
}

package errores2;
import java.util.Scanner;

public class main {

    public static void main(String[] args) {
      Scanner read=new Scanner(System.in);
      ascii q=new ascii();
      System.out.println("Digite frase a convertir");
      q.cadena=read.nextLine();
      q.splitcadena();
    }
}
0
задан 14.10.2016, 18:44
5 ответов

Чтобы видеть, содержит ли цепь какой-либо из этих символов я использовал бы следующее регулярное выражение: ".*[$&#].*". Это регулярное выражение означает следующее. Точка представляет любой символ, звездочка представляет 0 или N разы, и символы между квадратными скобками представляют положение, следовательно это регулярное выражение положительное, если он содержит $ или & или #.

    String regExp=".*[hxx].*";
    if(cadena.matches(regExp)){
        System.out.println("Mensaje de error");
        System.exit(0);
    } 

Или возможно использовал бы метод внутри твоего класса ascii тип: q.salirSiContiene (" $ ");

 public void salirSiContiene(String caracter){ 
    if(cadena.contains(caracter)){
        System.out.println("La cadena contiene "+caracter);
        System.exit(0);
    } 
 }

Чтобы обнаруживать самый больший символ, если от цепи не отказались, я сделал бы следующее:

    char mayor = 0;
    for (int i = 0; i < cadena.length(); i++) {
        if ((int) cadena.charAt(i) > mayor) {
            mayor =  cadena.charAt(i);
        }
    }
    System.out.println (mayor); 

Ты не нуждаешься в try catch.

2
ответ дан 24.11.2019, 13:06

Это solucionГ© с циклом

If(la casilla del arreglo era igual a tal caracter){
  throw new Exception();
1
ответ дан 24.11.2019, 13:06

Ты протестировал ее funciГіn indexof ()?

Проверь aquГ -

0
ответ дан 24.11.2019, 13:06
  • 1
    Привет @OmarMurcia. и #161; Желанный в Стакк Оверфлов в espaГ±ol и спасибо и #180; из-за того, что способствует! и #191; Podr и # 237; схвати объяснять с небольшим количеством м и # 225; s детали, показывая c и # 243; mo решать и # 237; в вопрос? Идея состоит в том, чтобы вносить полные ответы качества, которые и #250; tiles даже для будущего лектората. Внешняя ссылка может служить для того, чтобы дополнить, но сдержанная главная обязанность и # 237; чтобы быть в ответе. Quiz и # 225; s я заинтересовал тебя реализовывать , пробежавший и читать CГіmo отвечать . – Mariano 14.10.2016, 04:10

Ну, то, что я сделал, состоит в том, чтобы делать упражнение с помощью методов idelcano и полный estrutura был бы:

public class LetraMayor {
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        System.out.println("Escribe una frase...");
        String miCadena = scn.nextLine();

        if (contieneCaracteresNoPermitidos(miCadena)) {
            System.err.println("La frase contiene: $, & o #.");
        } else {
            System.out.println("La letra mayor es: '" + letraMayor(miCadena) + "'");
        }
        scn.close();
    }

    public static boolean contieneCaracteresNoPermitidos(String cadena) {
        String regExp=".*[$&#].*";
        if(cadena.matches(regExp)){
            return true;
        } else {
            return false;
        }
    }

    public static char letraMayor(String cadena) {
        int letraMayor = 0;// El valor mas bajo.

        for (int i = 0; i < cadena.length(); i++) {
            int letraActual = (int) cadena.charAt(i);
            if (letraActual > letraMayor) {
                letraMayor = cadena.charAt(i);
            }
        }

        return (char) letraMayor;
    }
}

Одинокая полная структура, но ответ уже у тебя есть она idelcano, и как ты можешь видеть в коде, не используется никакой try/catch.

0
ответ дан 24.11.2019, 13:06

Я рекомендую просачиваться сначала тебе, что он не содержал символы: $, и или # с функцией Contains () Java.lang. String в условии if(){} где ты просишь слово.

Порядок был бы:

  • Просить слово в функции
  • Проверять с одним if(){} если он содержит символы, о которых ты упоминаешь ($, и, #)
  • Если это true условие, пошли сообщение ошибки. Противоположный случай пробегает полное слово с циклом for ища положение самого большого ascii.

** Чтобы получать ascii буквы ты можешь делать это следующей формой:

Character.toString ((char) i);
0
ответ дан 24.11.2019, 13:06