fail();
import org.junit.Test;
import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.fail;
public class ExampleTest {
private void exceptionMethod() throws Exception {
throw new RuntimeException("test");
}
@Test
public void test() {
try {
exceptionMethod();
fail("Impossible");
} catch (Exception e) {
assertEquals("Checks class", RuntimeException.class, e.getClass());
assertEquals("Checks message", "test", e.getMessage());
}
}
}
import java.util.StringJoiner;
import java.util.function.Function;
public class AppSwap {
public static final String WORD_DELIMITER = " ";
public static final Function<Character, Boolean> PREDICATE = character
-> character < '0' || character > '9';
public static void main(String[] args) throws Exception {
final String originalSequence = "м1ама мыла рам5у";
final String transformedSequence = transform(originalSequence);
System.out.println(originalSequence);
System.out.println(transformedSequence);
}
private static String transform(String originalSequence) {
// Split делим на слова
final String[] words = originalSequence.split(WORD_DELIMITER);
// Transform преобразуем
for (int i = 0; i < words.length; i++) {
words[i] = transformWord(words[i], PREDICATE);
}
// Join объединяем в предложение
final StringJoiner stringJoiner = new StringJoiner(WORD_DELIMITER);
for (int i = 0; i < words.length; i++) {
stringJoiner.add(words[i]);
}
return stringJoiner.toString();
}
private static String transformWord(final String inputWord, final Function<Character, Boolean> predicate) {
final char[] chars = inputWord.toCharArray();
for (int i = 0; i < chars.length / 2; i++) {
final int startIndex = i;
final int lastIndex = chars.length - 1 - i;
if (
predicate.apply(chars[startIndex])
&& predicate.apply(chars[lastIndex])
) {
// Swap \ Обмен символами
swapChars(chars, startIndex, lastIndex);
}
}
return new String(chars);
}
private static void swapChars(final char[] chars, final int startIndex, final int lastIndex) {
final char temp = chars[startIndex];
chars[startIndex] = chars[lastIndex];
chars[lastIndex] = temp;
}
}
public class AppDivide {
public static void main(String[] args) throws Exception {
/** Делимое */
int dividend = 554223;
/** Делитель */
int divider = 11;
divide(dividend, divider);
}
private static void divide(int dividend, int divider) throws Exception {
validate(dividend);
validate(divider);
// Находим мин длину для отображения (+1 - это для знака минус)
int maxLen = 1 + Math.max(Integer.valueOf(dividend).toString().length(), Integer.valueOf(divider).toString().length());
String intFormat = "%" + maxLen + "d";
System.out.println(generateTab(maxLen + maxLen + 2, '='));
System.out.println(" " + String.format(intFormat, dividend) + "|" + String.format(intFormat, divider));
int result = 0;
while (true) {
// Найти следующую цифру
Num num = divideNext(dividend, divider);
if (num.getDigit() == 0) {
break;
}
// Вывод вычитаемого значения и полученной цифры
String numFormat = "%" + (maxLen - num.getPointPosition()) + "d";
System.out.println(" " + String.format(numFormat, -divider * num.getDigit()) + generateTab(num.getPointPosition(), ' ') + "|" + String.format(numFormat, num.getDigit()));
// Модифицирование остатка и сохранение в результат
result += num.getValue();
dividend -= num.getValue() * divider;
// Вывод линии и остатка
System.out.println(generateTab(maxLen + maxLen + 2, '-'));
System.out.println(" " + String.format(intFormat, dividend) + "|" );
}
// Вывод остатка и результата
System.out.println(generateTab(maxLen + maxLen + 2, '='));
System.out.println(" " + String.format(intFormat, dividend) + "|" + String.format(intFormat, result));
}
private static Num divideNext(int dividend, int divider) {
int pointPosition = 0;
if (dividend < divider) {
return new Num(0,0);
}
while(dividend > divider * 10) {
pointPosition ++;
divider *= 10;
}
int count = 1;
while(dividend > divider * (count + 1)) {
count ++;
}
return new Num(count, pointPosition);
}
private static String generateTab(int length, char ch) {
StringBuilder result = new StringBuilder();
for (int i = 0 ; i < length; i++) {
result.append(ch);
}
return result.toString();
}
private static void validate(int value) throws Exception {
if (value < 0) {
throw new Exception("Validation error: " + value);
}
}
private static class Num {
private final int digit;
private final int pointPosition;
public Num(int value, int pointPosition) {
this.digit = value;
this.pointPosition = pointPosition;
}
public int getDigit() {
return digit;
}
public int getPointPosition() {
return pointPosition;
}
public int getValue() {
int result = digit;
for (int i = 0; i < pointPosition; i++) {
result *= 10;
}
return result;
}
};
}
================
554223| 11
-55 | 5
----------------
4223|
-33 | 3
----------------
923|
-88 | 8
----------------
43|
-33| 3
----------------
10|
================
10| 50383
package ru.bedward70.toster.q440809;
public class App {
public static void main(String[] args) {
final String origin = "Мама мыла раму!";
final String result = addSpaces(origin, 20);
System.out.println(" 12345678901234567890123456789012345678901234567890");
System.out.println("Origin: " + origin);
System.out.println("Result: " + result);
}
private static final String DELIMITER = " ";
private static String addSpaces(String origin, int count) {
// Validation | проверка от зацикливания
if (origin.indexOf(DELIMITER) == -1) {
throw new RuntimeException("No \"" + DELIMITER + "\" in \"" + origin + "\" string");
}
// work Buffer | Рабочий буфер
final StringBuilder sb = new StringBuilder(origin);
// Delimiter Point | Указатель, где происходит поиск делимитера
int point = 0;
// Cycle | Пока не набьем нужную длину
while (sb.length() < count) {
int index = sb.indexOf(DELIMITER, point);
// end text | Если конец текста, то начинаем с начала
if (index == -1) {
point = 0;
continue;
}
// is next the delimiter? | Если не последний делимитер в последовательности делимитеров, то это не наш случай - пропускаем
point = index + DELIMITER.length();
if (point == sb.indexOf(DELIMITER, point)) {
continue;
}
// Add delimiter | Нашли последний делимитер в последовательности делимитеров, то добавляем
sb.replace(point, point, DELIMITER);
point += DELIMITER.length();
}
return sb.toString();
}
}