Помогите пожалуйста с решением, нужно, чтобы если в выводе получалась строка длиной более 40 символов, после 40 символа стояло троеточие

import java.util.Scanner;
public class calculator {
    public static void main(String[] args) throws Exception {
        Scanner scn = new Scanner(System.in);
        String cal = scn.nextLine();
        char action;
        String[] data;
        if (cal.contains(" + ")) {
            data = cal.split(" \\+ ");
            action = '+';
        } else if (cal.contains(" - ")) {
            data = cal.split(" - ");
            action = '-';
        } else if (cal.contains(" * ")) {
            data = cal.split(" \\* ");
            action = '*';
        } else if (cal.contains(" / ")) {
            data = cal.split(" / ");
            action = '/';
        }else{
            throw new Exception("Некорректный знак действия");
        }
        if (action == '*' || action == '/') {
            if (data[1].contains("\"")) throw new Exception("Строку можно делить или умножать только на число");
        }
        for (int i = 0; i < data.length; i++) {
            data[i] = data[i].replace("\"", "");
        }

        if (action == '+') {
            printInQuotes(data[0] + data[1]);
        } else if (action == '*') {
            int multiplier = Integer.parseInt(data[1]);
            String result = "";
            for (int i = 0; i < multiplier; i++) {
                result+=data[0];
            }
            printInQuotes(result);
        } else if (action == '-') {
            int index = data[0].indexOf(data[1]);
            if(index == -1){
                printInQuotes(data[0]);
            }else{
                String result = data[0].substring(0, index);
                result+=data[0].substring(index+data[1].length());
                printInQuotes(result);
            }
        }else{
            int newLen = data[0].length()/Integer.parseInt(data[1]);
            String result = data[0].substring(0,newLen);
            printInQuotes(result);
        }


    }
    static void printInQuotes(String text){
        System.out.println("\""+text+"\"");
    }
}

Ответы (1 шт):

Автор решения: Nowhere Man

Так как вывод реализуется в методе printInQuotes, то достаточно использовать стандартные методы класса String для решения этой задачи, тем более, что они уже применялись при обработке операции "вычитания" -

  • Проверить длину входной строки при помощи String::length
  • Если строка слишком длинная, то взять подстроку нужной длины: String::substring(int start, int end) и прибавить многоточие (как строку из трёх точек "..." или как символ '…')

Приведённой информации должно быть достаточно для самостоятельной реализации в коде.

→ Ссылка