2.Practice Floating Point Numbers
Как се решава тази задача с Java?
Как се решава тази задача с Java?
Ами реално на Java тази задача не можеш да я решиш, защото тя е пригодена за C# и очаква две значения от decimal. Такъв клас и тип в Java няма и точно такива числа не можеш да докараш на Java каквито иска C#.
Е все пак има едно Java "решение" и то е такова:
package ProgFundamentals;
public class FloatingPointNumbers {
public static void main(String[] args){
System.out.println("3.141592653589793238");
System.out.println("1.60217657");
System.out.println("7.8184261974584555216535342341");
}
}
Вчера проблема ми беше как да прочета числото от конзолата като се опитвах с :
Scanner scan = new Scanner(System.in); BigDecimal Decimal = scan.nextBigDecimal(); System.out.println(Decimal);
Всеки път ми даваше Exception :) И така прекарах целия ден в търсене на решение на проблема :)
В крайна сметка ме озари идеята, че мога да прочета числото от конзолата като String и след това да го форматирам или обърна в BigDecimal.
И Успях най - накрая :) Но решението работи в Конзолата но НЕ и в Judge системата :) ето го и него:
import java.math.*; import java.util.Scanner; public class p02_PracticeFloatingPointNumbers { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String Decimal = scan.nextLine(); BigDecimal myDecimal = null; myDecimal = new BigDecimal(Decimal); System.out.println(myDecimal); } }
Да прав си, ако минем през стринг за първа и трета цифра ще стане. Тогава решението ти ще изглежда така:
Scanner scan = new Scanner(System.in); String Decimal1 = scan.nextLine(); BigDecimal myDecimal1 = new BigDecimal(Decimal1); double myDouble = Double.parseDouble(scan.nextLine()); String Decimal2 = scan.nextLine(); BigDecimal myDecimal2 = new BigDecimal(Decimal2); System.out.println(myDecimal1); System.out.println(myDouble); System.out.println(myDecimal2);
За double си караме както трябва. Като workaround наистина става, макар, че става по-сложно. Задачата е просто пригодена за C#, и там четеш 2 пъти decimal и 1 път double.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication112
{
class Program
{
static void Main(string[] args)
{
decimal num1 = 3.141592653589793238m;
double num2 = 1.60217657;
decimal num3 = 7.8184261974584555216535342341m;
Console.WriteLine(num1);
Console.WriteLine(num2);
Console.WriteLine(num3);
}
}
}
За c#, в случай, че някой не се е сетил.
Благодаря много аз вчера се мъчех няколко часа и нищо накрая, И си помислих, че може би е само за C# :) Но ти принтираш само три String и нищо повече.