Необходимо вернуть два значения в цикле For с помощью оператора if / else - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть домашнее задание в моей школе, где мне нужно разделить цифры и буквы и распечатать их отдельно. Моя проблема в том, что я могу вернуть только одно значение, которое является числом, а не буквами в моем операторе if / else, мне нужно вернуть оба значения, чтобы я мог печатать числа и буквы отдельно.

Любое предложение о том, как я мог бы сделать это только одним методом?

public static String Separation(String output) {
    String number = "";
    String letter = "";
    for (int i = 0; i < output.length(); i++) {
        char x = output.charAt(i);
        if (Character.isDigit(x)) {
            number += x;
        } else {
            letter += x;
        }
    }
    return number;
}

Ответы [ 4 ]

10 голосов
/ 04 апреля 2019

Вы можете сделать что-то вроде:

  • возвращает массив строк: return new String[] { number, letter };
  • или вернуть список строк: return Arrays.asList(number, letter)

Или еще ООП: вы создаете небольшой класс, содержащий две строки, например:

class Entry {
  String number;
  String letter;
...

и затем вы возвращаете экземпляр этого класса. Конечно, вы должны соответствующим образом адаптировать сигнатуру вашего метода, чтобы использовать желаемый тип возвращаемого значения вместо public String ....

1 голос
/ 04 апреля 2019

… Мне нужно разделить цифры и буквы и распечатать их по отдельности.

Вам действительно нужен статический метод, который возвращает что-то?

public class WTF {

    String number;
    String letter;

    public void separation(String output) {
        number = "";
        letter = "";
        for (int i = 0; i < output.length(); i++) {
            char x = output.charAt(i);
            if (Character.isDigit(x)) {
                number += x;
            } else {
                letter += x;
            }
        }
    }

    public static void main(String args[]) {
        WTF wtf = new WTF();
        wtf.separation("2 to 5 the jury decides");
        System.out.println(wtf.number + " " + wtf.letter);
    }

}
1 голос
/ 04 апреля 2019
public class Result {
   private String number;
   private String letter;

   public Result(String number, String letter) {
      this.number = number;
      this.letter = letter;
   }

   public void setNumber(String number) {
      this.number = number;
   }

   public void setLetter(String letter) {
      this.letter = letter;
   }

   public String getNumber() {
      return number;
   }

   public String getLetter() {
      return letter;
   }
}

затем

public static Result Separation(String output) {
   String number = "";
'  String letter = "";
   for (int i = 0; i < output.length(); i++) {
       char x = output.charAt(i);
       if (Character.isDigit(x)) {
           number += x;
       } else {
           letter += x;
       }
   }
   return new Result(number, letter);
}

Отредактировано: Переход с c # на java

0 голосов
/ 04 апреля 2019

Вы можете использовать два отдельных списка, один для цифр и другой для букв.

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