Croocked digit ++ изпитна задача

здравейте,

как може да се импортират успешно тези неща в инетлиджей? В момента ми светят.

image

  1. Имам нужда от помощ относно обработката на входните дани и махането на десетичната запетая. Тук имам идея, но тя зависи от 3-атта точка.

  2. Да може, да се работи с числа по големи от 99 99 99 99. Пробвам някои неща, но не успавявам.

Кодът работи за естествени числа, но искам да го разширя до число със 300 знака; както е по условие.

import java.util.Scanner;

//import java.math;
public class crockedNumberVar2Dgudj {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//double budget = Double.parseDouble(scanner.nextLine());
int inputConsle = Integer.parseInt(scanner.nextLine());
int input = Math.abs(inputConsle);
String.valueOf(input);
String textNumber = String.valueOf(input);
int aLengthOfArray = textNumber.length();
int a = 2;
int b = 3;
double power = Math.pow(10, aLengthOfArray);
int currentNumberSum = 0;
for (int m = 10; m < power; m *= 10) {
int tempDigit = input / m % 10;
currentNumberSum += tempDigit;
}
int SumDigits = currentNumberSum + input % 10;
// IZHODNA PROmeliweliwa ot 1wiyat cikyl SumDigits
String textNumberSumDigits = String.valueOf(SumDigits);
int aLengthOfArray2 = textNumberSumDigits.length();
double power2 = Math.pow(10, aLengthOfArray2);
int currentNumberSum2 = 0;
boolean flag = true;

    for (int i = 1; i <= power2; i *= 10) {
        int tempDigit2 = SumDigits / i % 10;
        currentNumberSum2 += tempDigit2;

    } // zatwaryama wtoriyat Cikyl: za sumata na chilsta na sbora

    int SumDigits2 = currentNumberSum2 + SumDigits % 10;
    // System.out.println("");
    System.out.printf("%d", currentNumberSum2);
}

} //END Program

Колега ползвай :
import java.math.BigInteger;
import java.util.Scanner;

public class CrockedNumberVar2Dgudj {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();

    input = input.replace(".", "").replace(",", "");

    BigInteger bigIntegerInput = new BigInteger(input);

    BigInteger currentNumberSum = BigInteger.ZERO;

digits - Pastebin.com

здрасти,

благодаря за решението!

Не съм търсил, а има ли биг дабъл или нещо подобно?

Искам, да изистя запетята на вход. Може и да е дроб.

Измислх , как да го направя, но като извадиш 1,23 от 1 и дава 0,29998889 , а не ми се пише още код, за да махна тази грешка джавата. Има ли елегантен метод за това? Виждал съм неща по темата.

благодаря

Да , използвайте BigInteger : applyOfBigInteger - Pastebin.com

В горния използваме конструктора на BigDecimal, който приема низове, за да зададем точните стойности на числата.

Вариант втори - Можем да и класа DecimalFormat: DecimalFormat - Pastebin.com Елегантно решение и подход : Тук създаваме обект от класа DecimalFormat със зададения шаблон “#.##”, който определя броя на цифрите след десетичната запетая. След това използваме метода format за да форматираме числото и да го преобразуваме в низ.Супер!

eeха, супер е биг децимала :slight_smile: благодаря !