Получить первый экземпляр письма из строки - PullRequest
1 голос
/ 26 февраля 2012

Я работаю над этим очень простым методом, я знаю, я очень близок к тому, чтобы закончить его, но мне не хватает детали.Я ценю любую помощь.Спасибо.

/**
  Gets the first letter in this string.
  @return the FIRST LETTER, or "" if there are no letters.
  add1=AD3F add2=EF4G result=32SFB  (BUT THESE ARE RANDOM ONLY INTS AND CHARS)
*/
public String firstLetter()
{
    String line = add1+add2+result;

    for(int i=0; i<line.length(); i++){
    char ch=new Character(line.charAt(i));
    if(Character.isLetter(ch)){
        System.out.println("This is the first letter"+ch);
        return ch;
    }
    else
        System.out.println("No it is not a character: "+ch);
    return "";
    }

Ответы [ 3 ]

4 голосов
/ 26 февраля 2012

Ваш тип возврата - String, но вы пытаетесь вернуть только один символ .Почему бы не заставить его вернуть char, с \0 в качестве возвращаемого значения "без символов" или, возможно, с выдачей исключения ...

Вам также нужно подумать о концах блоков - вашем *Оператор 1008 *, ваше предложение else, цикл и сам метод.Я бы настоятельно рекомендовал:

  • Использование скобок для всех случаев, даже если в блоке есть только один оператор (согласно предложению else
  • Обращая внимание на отступы, это делает разницу в ясности для такого рода вещей.
1 голос
/ 26 февраля 2012

Ваша логика должна выглядеть следующим образом:

    char ch;
    for (int i = 0; i < line.length(); i++) {
        ch = new Character(line.charAt(i));
        if (Character.isLetter(ch)) {
            System.out.println("This is the first letter" + ch);
            return String.valueOf(ch);
        }
    }
    System.out.println("No letters, sorry.")
    return "";

Как только письмо найдено, оно сообщается и возвращается.Но если достигнут конец конца line (то есть цикл for завершен), то, очевидно, письмо не найдено, поэтому сообщите об этом и верните пустую строку.

1 голос
/ 26 февраля 2012

Вам необходимо переместить код else за пределы цикла, чтобы он выполнялся только после проверки всех символов:

public class FirstLetter
{
    public static void main(String[] args)
    {
        System.out.println(firstLetter());
    }

    public static String firstLetter()
    {
        String line = "AD3F" + "EF4G" + "32SFB";

        for (int i = 0; i < line.length(); i++)
        {
            char ch = line.charAt(i);
            if (Character.isLetter(ch))
            {
                System.out.println("This is the first letter: " + ch);
                return Character.toString(ch);
            }

        }
        System.out.println("No character found");
        return "";
    }
}

Такая проблема становится более очевидной, когда вы четко форматируете код.

Я сохранил тип возвращаемого значения как String согласно вашему оригиналу, но см. Также комментарии Джона Скита об изменении этого значения на char.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...