Как правильно отформатировать представление весовой строки в Java (kg.grams)? (без использования форматирования строк)JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как правильно отформатировать представление весовой строки в Java (kg.grams)? (без использования форматирования строк)

Сообщение Anonymous »

Я пытаюсь реализовать метод toString в Java, который форматирует вес в виде кг.грамм. Вот как должен работать вывод на основе значения _kg (килограммы) и _grams (граммы):
(не разрешено использовать EndWith() и форматирование строк)
Требования:
Если _grams == 0, выходное значение должно быть _kg.0.
Пример: _kg = 4, _grams = 0 -> 4.0.
Если _grams представляет собой одну цифру (1–9), ее следует дополнить двумя нулями.
Пример: _kg = 3, _grams = 5 -> 3,005.
Если _grams состоит из двух цифр (10–99), он должен:
Показывать две цифры, если он заканчивается ненулевой цифрой.
Пример: _kg = 4, _grams = 70 -> 4,07.< /p>
Удалить последний ноль, если он заканчивается нулем.
Пример: _kg = 3, _grams = 200 -> 3,2.
Если _grams состоит из трех цифр (100–999), добавьте граммы напрямую, если только последняя цифра не равна нулю, в этом случае должны отображаться только соответствующие значащие цифры.
Пример: _kg = 3, _grams = 160 -> 3,16.< /p>
Вот что я уже пробовал:
**Попытка1
**
public String toString() {
// Case 1: Only kilograms, no grams
if (_grams == 0) {
return _kilos + ".0";
}

// Case 2: _grams is between 1 and 9 (single digit)
if (_grams > 0 && _grams < 10) { // kg = 5 , grams = 8
return _kilos + ".00" + _grams; // 5.008
}

// Case 3: _grams is between 10 and 99 (two digits) and does not end with zero
if (_grams >= 10 && _grams < 100 && _grams % 10 != 0) { // kg = 5 , grams = 64
return _kilos + ".0" + _grams; // 5.064
}

// Case 4: _grams is between 10 and 99 (two digits) and ends with zero
if (_grams >= 10 && _grams < 100 && _grams % 10 == 0) { // kg = 5 , grams = 80
return _kilos + ".0" + (_grams / 10); // 5.08
}
// case 5: _grams is above 100 and ends with 0
if (_grams > 100 && _grams % 10 == 0) { // kg = 5 , grams = 160
return _kilos + "." + _grams / 10; // 5.160
}

// Default case: _grams is three digits (100 to 999), add directly without padding
return _kilos + "." + _grams;
}


**Попытка2
**
public String toString() {
if (_grams == 0) {
return _kilos + ".0";
} else if (_grams > 0 && _grams < 10) {
return _kilos + ".00" + _grams;
} else if (_grams >= 10 && _grams < 100) {
// Manually handle two-digit formatting
if (_grams % 10 == 0) {
return _kilos + ".0" + (_grams / 10);
} else {
return _kilos + ".0" + _grams;
}
} else {
return _kilos + "." + _grams;
}
}

**Попытка3
**
public String toString() {
if (_grams == 0) { // if _grams is 0
return _kilos + ".0";
}
if (_grams > 10 && _grams < 100) { // if _grams == two digits
return _kilos + ".0" + _grams;
} else if (_grams > 0 && _grams < 10) { // if _grams == single digit between 1-10
return _kilos + ".00" + _grams;
} else if (_grams < 100 && _grams % 10 == 0) { // if _grams ends with zero
return _kilos + ".0" + _grams / 10;
} else if (_grams > 100 && _grams % 10 == 0) {
return _kilos + "." + _grams / 100;
} else {
return _kilos + "." + _grams;
}
}


Я все время не получаю результаты тестера:
public class WeightStudentTester
{
public static void main(String[] args) {
System.out.println("********** Test Weight - Started **********");
System.out.println("\n1. Testing Constructors and toString:");
Weight w1=new Weight(3,10);
System.out.println("\tw1:"+w1);
Weight w2=new Weight(w1);
System.out.println("\tw2:"+w2);
Weight w3=new Weight(4003);
System.out.println("\tw3:"+w3);
System.out.println("\n2. Testing accessors :");
System.out.println("\tw1:"+w1);
System.out.println("\tkilos of w1:"+w1.getKilos());
System.out.println("\tgrams of w1:"+w1.getGrams());
System.out.println("\n3. Testing equals method:");
Weight w4=new Weight(4,3);
System.out.println("\tw3:"+w3);
System.out.println("\tw4:"+w4);
if(w3.equals(w4))
System.out.println("\tw3 is the same weight as w4");
else
System.out.println("\tw3 isn't the same weight as wd4");
System.out.println("\n4. Testing lighter method:");
if(w3.lighter(w1))
System.out.println("\tw3 is lighter than w1");
else
System.out.println("\tw3 isn't lighter than w1");
System.out.println("\n5. Testing heavier method:");
if(w3.heavier(w1))
System.out.println("\tw3 is heavier than w1");
else
System.out.println("\tw3 isn't heavier than w1");
System.out.println("\n6. Testing add method:");
System.out.println("\tw1:"+w1);
System.out.println("\tAdding 500 grams to w1 returns the weight : "+w2.add(500));
System.out.println("\n********** Test Weight - Finished **********\n");

Weight w15=new Weight(w1);
System.out.println("\tw15:"+w15);
Weight w16=new Weight(3, 200);
System.out.println("\tw16:"+w16);
Weight w20=new Weight(4, 70);
System.out.println("\tw20:"+w20);

// 25. Zero Weight
Weight w25 = new Weight(0, 0);
System.out.println("\tw25 (0,0): " + w25 + " (Expected: 0.0)");

// 26. Only Kilograms, No Grams
Weight w26 = new Weight(5, 0);
System.out.println("\tw26 (5,0): " + w26 + " (Expected: 5.0)");

// 27. Single-Digit Grams
Weight w27 = new Weight(3, 7);
System.out.println("\tw27 (3,7): " + w27 + " (Expected: 3.007)");

// 28. Double-Digit Grams (Not Ending in Zero)
Weight w28 = new Weight(2, 45);
System.out.println("\tw28 (2,45): " + w28 + " (Expected: 2.045)");

// 29. Double-Digit Grams (Ending in Zero)
Weight w29 = new Weight(6, 50);
System.out.println("\tw29 (6,50): " + w29 + " (Expected: 6.05)");

// 30. Exactly 200 Grams
Weight w30 = new Weight(4, 200);
System.out.println("\tw30 (4,200): " + w30 + " (Expected: 4.2)");

// 31. Multiple of 100 Grams (But Not 200)
Weight w31 = new Weight(3, 300);
System.out.println("\tw31 (3,300): " + w31 + " (Expected: 3.3)");

// 32. Total Grams Conversion (Exact Kilograms)
Weight w32 = new Weight(5000);
System.out.println("\tw32 (5000 grams): " + w32 + " (Expected: 5.0)");

// 33. Total Grams Conversion (No Exact Kilograms)
Weight w33 = new Weight(5423);
System.out.println("\tw33 (5423 grams): " + w33 + " (Expected: 5.423)");

// 34. Mixed Kilograms and Single-Digit Grams
Weight w34 = new Weight(7, 9);
System.out.println("\tw34 (7,9): " + w34 + " (Expected: 7.009)");

// 35. Mixed Kilograms and Double-Digit Grams (Ending in Zero)
Weight w35 = new Weight(8, 20);
System.out.println("\tw35 (8,20): " + w35 + " (Expected: 8.02)");

// 36. Mixed Kilograms and Double-Digit Grams (Not Ending in Zero)
Weight w36 = new Weight(10, 34);
System.out.println("\tw36 (10,34): " + w36 + " (Expected: 10.034)");

// 37. Mixed Kilograms and Exactly 200 Grams
Weight w37 = new Weight(9, 200);
System.out.println("\tw37 (9,200): " + w37 + " (Expected: 9.2)");

// 38. Mixed Kilograms and 300 Grams
Weight w38 = new Weight(12, 300);
System.out.println("\tw38 (12,300): " + w38 + " (Expected: 12.3)");

// 39. Total Grams Conversion (Complex Value)
Weight w39 = new Weight(7429);
System.out.println("\tw39 (7429 grams): " + w39 + " (Expected: 7.429)");

// 40. Total Grams Conversion (Boundary Case)
Weight w40 = new Weight(999);
System.out.println("\tw40 (999 grams): " + w40 + " (Expected: 0.999)");

System.out.println("********** Test Weight - toString Method Finished **********");

// 41. Mixed Kilograms and 300 Grams
Weight w41 = new Weight(12, 330);
System.out.println("\tw41 (12,330): " + w41 + " (Expected: 12.33)");

}
}```



Подробнее здесь: https://stackoverflow.com/questions/791 ... ectly-with
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»