04. Beverage Labels -Проблем със задача
Здравейте колеги,
Пускам решението на задачата си в judge, като преди това съм тествал всеки ход и изход. Изходите са ми точно такива, каквито се искат в решението, но системата ми дава само 10/100. Къде е проблема? Ето и решението ми:
using System;
namespace SoftUniHomework01Task4
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            var ProductName = Console.ReadLine();
            var ProductVolume = int.Parse(Console.ReadLine());
            var ProductEnergy = int.Parse(Console.ReadLine());
            var ProductSugarContent = double.Parse(Console.ReadLine());
var energy = (ProductVolume*ProductEnergy)/100;
            var sugar =(ProductSugarContent * ProductVolume)/100;
            
            Console.WriteLine($"{ProductVolume}ml {ProductName}:"); 
            Console.WriteLine($"{energy}kcal, {sugar}g sugars");
        }
    }
}
Промени следните редове:
var energy = (ProductVolume*ProductEnergy)/100.00;
var sugar =(ProductSugarContent * ProductVolume)/100.00;
Пиши дали разрешава проблема.
Благодаря ти за отговора. Проблема е по различен - веднъж се иска без знаци с десетичната запетая, а веднъж се иска с един знак.
Това успях да го преодолея като сложих един If и филтрирах по четни стойности. Джъдж обаче още не ми го приема. Моля за помощ
import java.util.Scanner; public class Problem01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String name = scanner.nextLine(); double ProductVolume = Double.parseDouble(scanner.nextLine()); double ProductEnergy = Double.parseDouble(scanner.nextLine()); double ProductSugarContent = Double.parseDouble(scanner.nextLine()); double energy =(ProductVolume*ProductEnergy)/100.00; double sugar =(ProductSugarContent * ProductVolume)/100.00; System.out.printf("%.0fml %s:%n", ProductVolume, name); if (sugar%2==0) { System.out.printf("%.0fkcal, %.0fg sugars", energy, sugar); } else { System.out.printf("%.0fkcal, %.1fg sugars", energy, sugar); } } }Грешката ти е във форматирането на стойностите в printf. Пробвай така:
import java.util.Scanner; public class BeverageLabels { public static void main(String[] args) { Scanner console = new Scanner(System.in); String name= console.nextLine(); double ProductVolume = Double.parseDouble(console.nextLine()); double ProductEnergy = Double.parseDouble(console.nextLine()); int ProductSugarContent = Integer.parseInt(console.nextLine()); double energy =(ProductVolume*ProductEnergy)/100.00; double sugar =(ProductSugarContent * ProductVolume)/100.00; System.out.printf("%.0fml %s:%n", ProductVolume, name); System.out.printf("%.0fkcal, %.1f sugars", energy, sugar); } }Не се получава. Ето скрин на твоя код от джъдж.
https://i.imgur.com/cKRrX2D.png
Когато сложих g за грамовете пак не става и гърми, че вместо 154 се изписва 154,0
Това както казах според мен трябва да се заобиколи с един for цикъл в които да разделят четните на нечетните и да се нагласи нечетните да се закръглят до един знак след запатеята. Но дори и така пак гърми.
И при мен го имаше този проблем. С DecimalFormat се оправя. Ето така: import java.text.DecimalFormat; import java.util.Scanner; public class Zada4i1 { public static void main(String args[]) { Scanner scanner = new Scanner(System.in); DecimalFormat df = new DecimalFormat("#.###############"); String productName = scanner.nextLine(); int volume = Integer.parseInt(scanner.nextLine()); int energyContent = Integer.parseInt(scanner.nextLine()); double sugarContent = Double.parseDouble(scanner.nextLine()); double energyContentInGivenVolume = (volume * energyContent) / 100.0; double sugarContentInGivenVolume = (volume * sugarContent) / 100.0; System.out.printf("%dml %s:\n%skcal, %sg sugars", volume, productName, df.format(energyContentInGivenVolume), df.format(sugarContentInGivenVolume)); } }