Как распечатать что-то и вернуть другую вещь из метода в Java? - PullRequest
0 голосов
/ 05 апреля 2020

Итак, у меня есть метод в Java, который делает некоторые вещи со строками. В конце метода я делаю:

System.out.println(array[i-2]);
return(array[i-3]);

По сути, в этом методе я работаю с массивом строк. В конце я должен распечатать одно значение и вернуть другое значение. Теперь мне нужно создать метод main, в котором я позволю пользователю вводить данные, пока он не вводит пустую строку, затем вызывает этот метод, передает ему эту строку, заставляет метод выполнять свою работу со строкой и пишет вывести (распечатать) оба этих значения в консоли (массив [i-2] и массив [i-3]). Допустим, мой метод называется «StringFormating». Как я могу сделать это в основном методе? Я попытался сделать это:

Scanner input = new Scanner();
String result="";
do{
 result=input.nextLine();
 }while(!result.isBlank());

и затем сделать что-то вроде System.out.println(StringFormating(result));

, но это просто дает мне нулевые ссылки, и я до сих пор не понимаю, как на самом деле распечатать оба из этих значений в консоли. Любая помощь, пожалуйста?

Ответы [ 4 ]

0 голосов
/ 06 апреля 2020

Если я правильно понял ваше требование, вам нужно что-то вроде

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String result = "";
        do {
            System.out.print("Enter your string: ");
            result = input.nextLine();
            if (!result.isBlank()) {
                System.out.println(stringFormating(result));
            } else {
                System.out.println("Goodbye!");
            }
        } while (!result.isBlank());
    }

    static int stringFormating(String str) {
        String[] data = null;
        int n = 0;
        if (str != null) {
            data = str.split(",");
        }
        if (data.length == 2) {
            System.out.println(data[0]);
            try {
                n = Integer.parseInt(data[1]);
            } catch (NumberFormatException e) {
                System.out.println("Error occured while processing data.");
            }
        }
        return n;
    }
}

Пример прогона:

Enter your string: abc,200
abc
200
Enter your string: xyz,40
xyz
40
Enter your string: 
Goodbye!

Не стесняйтесь комментировать в случае любого сомнения / вопрос.

0 голосов
/ 06 апреля 2020

Я не уверен, правильно ли я вас понимаю, но это может быть решением.

Scanner input = new Scanner();
StringBuilder sb = new StringBuilder("");
while(!input.nextLine().isBlank()){
  sb.append(StringFormatting(input.nextLine()));
}
String result = sb.toString();
System.out.println(result);
0 голосов
/ 06 апреля 2020

Я не уверен, что правильно понимаю вашу проблему, но это может быть из-за необходимости. С помощью do while вы всегда выполняете тело do перед проверкой условия в while, поэтому, если у вас есть пустой ввод, вы собираетесь сохранить его в result. Вы можете попробовать сделать это:

while(!input.nextLine().isBlank()){
    result = input.nextLine();
}

В дополнение к этому, я бы порекомендовал вам написать имя метода с первой строчной буквой, таким образом stringFormatting, так как это Java наименование условность.

0 голосов
/ 06 апреля 2020

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

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

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