Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Задачи на числа. Решение. Покритикуйте. (часть #1) / 25 сообщений из 117, страница 1 из 5
15.03.2012, 17:22:57
    #37707153
Denis_m1st
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
Ввести с консоли n целых чисел и поместить их в массив. На консоль вывести:
1. Четные и нечетные числа.
2. Наибольшее и наименьшее число.
3. Числа, которые делятся на 3 или на 9.
4. Числа, которые делятся на 5 и на 7.
5. Элементы, расположенные методом пузырька по убыванию модулей.
6. Все трехзначные числа, в десятичной записи которых нет одинаковых цифр.
7. Наибольший общий делитель и наименьшее общее кратное этих чисел.
8. Простые числа.
9. Отсортированные числа в порядке возрастания и убывания.
10. Числа в порядке убывания частоты встречаемости чисел.
11. “Счастливые” числа.
12. Числа Фибоначчи: f0 = f1 = 1, f (n) = f (n–1) + f (n–2).
13. Числа-палиндромы, значения которых в прямом и обратном порядке совпадают.
14. Элементы, которые равны полусумме соседних эле¬ментов.
15. Период десятичной дроби p = m/n для первых двух целых положительных чисел n и m, расположенных подряд.
16. Построить треугольник Паскаля для первого положительного числа.

Привет, решение данных заданий на Java - ниже. Покритикуйте .

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
package chapt01.b;

import java.util.*;
import static java.util.Collections.*;

/**
 * Ввести с консоли n целых чисел и поместить их в массив. На консоль вывести:
 * 
 * @author m1st
 */

public class OperationsWithNumbers {
	private static List<Integer> divider(int divider, Integer[] array) {
		List<Integer> divided = new LinkedList<Integer>();
		for (Integer anArray : array) {
			if (anArray % divider == 0)
				divided.add(anArray);
		}
		return divided;
	}

	private static Map revSortByVal(Map<Integer, Integer> map) {
		List<Object> list = new LinkedList<Object>(map.entrySet());
		sort(list, new Comparator() {
			public int compare(Object o1, Object o2) {
				return ((Comparable) ((Map.Entry) (o2)).getValue())
						.compareTo(((Map.Entry) (o1)).getValue());
			}
		});
		Map result = new LinkedHashMap();
		for (Object aList : list) {
			Map.Entry entry = (Map.Entry) aList;
			result.put(entry.getKey(), entry.getValue());
		}
		return result;
	}

	private static List<Integer> bubbleRevSortByMod(Integer[] input) {
		Integer[] nums = input.clone();
		boolean swapped = true;
		int j = 0;
		int tmp;
		while (swapped) {
			swapped = false;
			j++;
			for (int i = 0; i < nums.length - j; i++) {
				if (Math.abs(nums[i]) < Math.abs(nums[i + 1])) {
					tmp = nums[i];
					nums[i] = nums[i + 1];
					nums[i + 1] = tmp;
					swapped = true;
				}
			}
		}
		return Arrays.asList(nums);
	}

	private static long gcd(long a, long b) // Greatest Common Divisor
	{
		while (b > 0) {
			long temp = b;
			b = a % b;
			a = temp;
		}
		return a;
	}

	private static long gcd(Integer[] input) {
		long result = input[0];
		for (int i = 1; i < input.length; i++)
			result = gcd(result, input[i]);
		return result;
	}

	private static long lcm(long a, long b) // Least Common Multiple
	{
		return a * (b / gcd(a, b));
	}

	private static long lcm(Integer[] input) {
		long result = input[0];
		for (int i = 1; i < input.length; i++) {
			if ((input[i] == 0 || input[0] == 0)
					|| (input[i] < 0 || input[0] < 0))
				break;
			result = lcm(result, input[i]);
		}
		return result;
	}

	private static List<Integer> list1 = new LinkedList<Integer>();
	private static List<Integer> list2 = new LinkedList<Integer>();

	public static List<Integer> primeNums(Integer[] input) {
		list1.clear();
		for (Integer anInput : input) {
			if (isPrimeNum(anInput)) {
				list1.add(anInput);
			}
		}
		return list1;
	}

	public static boolean isPrimeNum(int n) {
		boolean prime = true;
		for (long i = 3; i <= Math.sqrt(n); i += 2) {
			if (n % i == 0) {
				prime = false;
				break;
			}
		}
		return (n % 2 != 0 && prime && n > 2) || n == 2;
	}

	private static Map<Integer, Integer> map = new TreeMap<Integer, Integer>();
	private static Map<Integer, Integer> invMap = new TreeMap<Integer, Integer>();

	private static void put(Integer key, Integer value) {
		map.put(key, value);
		invMap.put(value, key);
	}

	private static void buildPascalTriangle(int number, int rows) {
		for (int y = 0; y < rows; y++) {
			int c = number;
			for (int w = 0; w < rows - y; w++) {
				System.out.print("   ");
			}
			for (int x = 0; x <= y; x++) {
				System.out.print("   " + c + " ");
				c = c * (y - x) / (x + 1);
			}
			System.out.println();
		}
	}

	public static void main(String[] args) {
		System.out.print("Сколько целых чисел вы собираетесь ввести? ");
		Scanner in = new Scanner(System.in);
		int size = in.nextInt();
		if (size == 0) {
			System.out.print("Программа завершена.");
			System.exit(0);
		}
		Integer[] numbers = new Integer[size];
		System.out.print("Введите целые числа через пробел "
				+ "и нажмите <Enter>: ");
		for (int i = 0; i < size; i++)
			numbers[i] = in.nextInt();

		// 1. Четные и нечетные числа
		for (int i = 0; i < size; i++) {
			if (numbers[i] % 2 == 0)
				list1.add(numbers[i]);
			else
				list2.add(numbers[i]);
		}
		System.out.println("Чётные числа: " + list1);
		System.out.println("Нечётные числа: " + list2);

		// 2. Наибольшее и наименьшее число.
		List<Integer> listFromArray = Arrays.asList(numbers);
		System.out.println("Наибольшее число: " + max(listFromArray));
		System.out.println("Наименьшее число: " + min(listFromArray));

		// 3. Числа, которые делятся на 3 или на 9.
		System.out.println("Числа, которые делятся на 3: "
				+ divider(3, numbers));
		System.out.println("Числа, которые делятся на 9: "
				+ divider(9, numbers));

		// 4. Числа, которые делятся на 5 и на 7.
		System.out.println("Числа, которые делятся на 5: "
				+ divider(5, numbers));
		System.out.println("Числа, которые делятся на 7: "
				+ divider(7, numbers));

		// 5. Элементы, расположенные методом пузырька по убыванию модулей. //
		System.out.println("Элементы, расположенные методом пузырька "
				+ "по убыванию модулей: " + bubbleRevSortByMod(numbers));

		// 6. Все трехзначные числа, в десятичной записи которых нет одинаковых
		// цифр.
		String num;
		list1.clear();
		for (int i = 0; i < size; i++) {
			num = numbers[i].toString();
			if (num.length() == 3 && num.charAt(0) != num.charAt(1)
					&& num.charAt(1) != num.charAt(2)
					&& num.charAt(0) != num.charAt(2))
				list1.add(numbers[i]);
		}
		System.out.println("Все трехзначные числа, "
				+ "в десятичной записи которых нет одинаковых цифр: " + list1);

		// 7. Наибольший общий делитель и наименьшее общее кратное этих чисел.
		System.out.println("Наибольший общий делитель: " + gcd(numbers));
		System.out.println("Наименьшее общее кратное: " + lcm(numbers));

		// 8. Простые числа.
		System.out.println("Простые числа: " + primeNums(numbers));

		// 9. Отсортированные числа в порядке возрастания и убывания.
		list1.clear();
		list1.addAll(listFromArray);
		sort(list1);
		System.out.println("Отсортированные числа в порядке возрастания: "
				+ list1);
		reverse(list1);
		System.out
				.println("Отсортированные числа в порядке убывания: " + list1);

		// 10. Числа в порядке убывания частоты встречаемости чисел.
		for (Integer i : numbers) {
			put(i, frequency(listFromArray, i));
		}
		System.out.println("Числа в порядке убывания частоты встречаемости "
				+ "чисел <Число=Встречаемость>: " + revSortByVal(map));

		// 11. “Счастливые” числа.
		list1.clear();
		for (int i = 0; i < size; i++) {
			num = numbers[i].toString();
			if (num.length() == 4
					&& num.charAt(0) + num.charAt(1) == num.charAt(2)
							+ num.charAt(3))
				list1.add(numbers[i]);
		}
		System.out.println("“Счастливые” числа (&#931; 1-ой пары чисел "
				+ "= &#931; 2-ой пары): " + list1);

		// 12. Числа Фибоначчи: f0 = f1 = 1, f (n) = f (n–1) + f (n–2).
		list1.clear();
		for (int i = 2; i < size - 2; i++) {
			if (numbers.length < 3)
				break;
			else if (numbers[i + 2] == numbers[i] + numbers[i + 1])
				list1.add(numbers[i]);
		}
		System.out.println("Числа Фибоначчи: " + list1);

		// 13. Числа-палиндромы, значения которых в прямом и обратном порядке
		// совпадают.
		List<StringBuilder> palindromes = new LinkedList<StringBuilder>();
		for (int i = 0; i < size; i++) {
			StringBuilder s = new StringBuilder(numbers[i].toString());
			if (s.toString().equals(s.reverse().toString()))
				palindromes.add(s);
		}
		System.out.println("Числа-палиндромы: " + palindromes);

		// 14. Элементы, которые равны полусумме соседних элементов.
		list1.clear();
		Integer[] int2;
		int2 = numbers.clone();
		for (int i = 1; i < int2.length - 1; i++) {
			if (int2.length < 3)
				break;
			if (int2[i] == (int2[i - 1] + int2[i + 1]) / 2)
				list1.add(int2[i]);
		}
		System.out.println("Элементы, которые равны полусумме соседних "
				+ "элементов: " + list1);

		/**
		 * 15. Период десятичной дроби p = m/n для первых двух целых
		 * положительных чисел n и m, расположенных подряд.
		 * 
		 * @author RodionGork
		 */
		long p, q, r, l, t, i;
		for (int n = 0; n < size - 1; n++)
			if (numbers.length < 2)
				break;
			else if (numbers[n] >= 0 && numbers[n + 1] >= 0) {
				p = numbers[n];
				q = numbers[n + 1];
				r = p;
				for (i = 0; i < q; i++)
					r = (r * 10) % q;
				t = r;
				l = 0;
				do {
					r = (r * 10) % q;
					l++;
				} while (r != t);
				t = r = p;
				System.out.print("Период десятичной дроби p = m/n для "
						+ "первых двух целых положительных чисел n и m, "
						+ "расположенных подряд: 0.");
				for (i = 0; i < l; i++)
					r = (r * 10) % q;
				for (i = 0; r != t; i++) {
					System.out.print(t * 10 / q);
					r = (r * 10) % q;
					t = (t * 10) % q;
				}
				System.out.print('(');
				for (i = 0; i < l; i++) {
					System.out.print(t * 10 / q);
					t = (t * 10) % q;
				}
				System.out.println(')' + " = " + p + "/" + q);
				break;
			}

		// 16. Построить треугольник Паскаля для первого положительного числа.
		list1.clear();
		for (int u = 0; u < size; u++)
			if (numbers[u] >= 0) {
				list1.add(numbers[u]);
				System.out
						.print("Сколько строк треугольника Паскаля для числа "
								+ list1.get(0) + " отображать? ");
				int rows = in.nextInt();
				buildPascalTriangle(list1.get(0), rows);
			}
	}
}
...
Рейтинг: 0 / 0
15.03.2012, 17:45:37
    #37707197
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
Ну сам алгоритм я просмотрел через строку, но ничего криминального не заметил. Могу сказать, что в некоторых местах имя переменных и имена методов не совсем логичные или не отражают суть проблемы, например list1, list2, divider() и т.п. Так же разбил бы метод main на части соответствующие выполняемым функциям типа того -

Код: java
1.
2.
3.
4.
5.
6.
main(){
Integer[] sourceNumbers = readInput();
findEvenAndOddNumbers(sourceNumbers);
findMaxMinNumbers(sourceNumbers);
//и т.д.
}



Ну это так, чтоб совсем по-пацански было
...
Рейтинг: 0 / 0
15.03.2012, 17:49:04
    #37707203
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
А ну еще тут у тебя косячок -
Код: java
1.
2.
List<Object> list = new LinkedList<Object>(map.entrySet());
		Map result = new LinkedHashMap();


Почему не используются generics? У тебя же всегда там Integer будет.
...
Рейтинг: 0 / 0
15.03.2012, 17:50:20
    #37707206
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
С точки зрения лабораторной, если работает, то зачет.
С точки зрения комерческого программирования:
1. В if и for обязательно используйте {}, даже для одной строки. Скобки можно опустить только если тело блока находится в той же строке что и if/for
2. revSortByVal - используйте полноценные английские слова reverseSortingByValue - читается намного лучше.
3. revSortByVal - полный ахтунг в плане генериков. Integer превращается в Object и потом вообще generic типа почему-то пропадает.
4. bubbleRevSortByMod - почему ByMod когда ByAbs на самом деле?
5. gcd, lcm - зачем писать такие именна, чтобы потом объяснять в коментарии? greatestCommonDivisor() и всё. Либо getGCD, если GCD - общепринятое имя в проекте.
6. Русскоязычный текст может потерятся в процессе компиляции.
7. Переменным таким как list1, int2 нужно давать более осмысленые имена. Для long p, q, r, l, t, i;, возможно, тоже.
8. Всё написано в строго процедурном стиле, хотя свой объект на каждую задачу напрашивается. Отсюда и такой разброд в именах переменных.
...
Рейтинг: 0 / 0
15.03.2012, 17:51:49
    #37707210
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
Ну и тут в принципе тоже, не то чтобы неправильно, но может привести к ошибке
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public static List<Integer> primeNums(Integer[] input) {
		list1.clear();
		for (Integer anInput : input) {
			if (isPrimeNum(anInput)) {
				list1.add(anInput);
			}
		}
		return list1;
	}



Лучше в каждом методе создавать свой List, а то рискуешь нарваться на неприятности, связанные с побочными эффектами.
...
Рейтинг: 0 / 0
15.03.2012, 18:00:32
    #37707231
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
авторВсё написано в строго процедурном стиле, хотя свой объект на каждую задачу напрашивается.
Я не пурист абсолютного ООП, но мне кажется практичнее создать утилитный класс по подобию java.util.Math, вы не согласны?
...
Рейтинг: 0 / 0
15.03.2012, 18:07:28
    #37707238
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
забыл никЯ не пурист абсолютного ООП, но мне кажется практичнее создать утилитный класс по подобию java.util.Math, вы не согласны?
Проще, но не практичнее.
Здесь единый ввод, обработка данных списком задач и достаточно общий вывод. Можно было унифицировать. Ну и static поубирать везде, кроме утилитных методов.
...
Рейтинг: 0 / 0
15.03.2012, 18:11:28
    #37707242
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
Офигеть, сколько букв. Чета хочется убрать.
...
Рейтинг: 0 / 0
15.03.2012, 18:34:38
    #37707287
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
BlazkowiczС точки зрения комерческого программирования:
1. В if и for обязательно используйте {}, даже для одной строки. Скобки можно опустить только если тело блока находится в той же строке что и if/for...
Зачем??? Уже сколько сталкиваюсь с этой дилеммой, но ни одна из сторон внятного ответа не дала. На сайте Сана (или АйБиЭма - не помню) встречал рекомендацию не использовать фигурные скобки для одной строки. Так как и ранее не использовал, то это только придало уверенности, что я все-таки делаю правильно. А тут ты ... если бы твой авторитет не был столь высоким, то я бы просто прошел мимо, а так очень интересно услышать мнение - зачем.
...
Рейтинг: 0 / 0
15.03.2012, 18:41:35
    #37707303
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
Я бы и divider упростил. Он существует только для того чтоб вернуть список который сушествует
только для того чтобы отработал toString. Так выведете сразу на консоль результат. Незачем
мусорить в куче.
...
Рейтинг: 0 / 0
15.03.2012, 19:04:16
    #37707342
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
И зачем LinkedList? Там сгодился-бы обычный ArrayList.
...
Рейтинг: 0 / 0
15.03.2012, 21:27:02
    #37707530
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
Blazkowiczесли тело блока находится в той же строке что и if/for
тут трудность в том, что я включаю автоформат...он строки делает.... не особо церемонясь.
...
Рейтинг: 0 / 0
15.03.2012, 21:34:38
    #37707539
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
Blazkowicz6. Русскоязычный текст может потерятся в процессе компиляции.??
...
Рейтинг: 0 / 0
15.03.2012, 22:27:20
    #37707600
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
IDVsbruckЗачем??? Уже сколько сталкиваюсь с этой дилеммой, но ни одна из сторон внятного ответа не дала. На сайте Сана (или АйБиЭма - не помню) встречал рекомендацию не использовать фигурные скобки для одной строки. Так как и ранее не использовал, то это только придало уверенности, что я все-таки делаю правильно. А тут ты ... если бы твой авторитет не был столь высоким, то я бы просто прошел мимо, а так очень интересно услышать мнение - зачем.
В связи с тем как в Java принято ставить скобки, то для глаза нет разницы между такими блоками.
Код: java
1.
2.
3.
if(a == b || c == d || anotherLongObject.isInCondition()){
    doSomething();
    doSomethingElse();        


Код: java
1.
2.
3.
if(a == b || c == d || anotherLongObject.isInCondition())
    doSomething();
    doSomethingElse();        


Один девелопер не пишет скобку. Второй дописывает строку в тело условия. А она оказывается вне. Такую багу уже раза 3 встречал за последний год в legacy проекте.
...
Рейтинг: 0 / 0
15.03.2012, 22:28:39
    #37707601
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
Petro123тут трудность в том, что я включаю автоформат...он строки делает.... не особо церемонясь.
Я всегда пишу скобки. Мне не трудно.
...
Рейтинг: 0 / 0
15.03.2012, 22:30:21
    #37707602
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
Petro123Blazkowicz6. Русскоязычный текст может потерятся в процессе компиляции.??
IDE сохраняет в одной кодировке. Компилятор работает в другой. Зачастую они совпадают. Но могут и не совпасть.
...
Рейтинг: 0 / 0
15.03.2012, 22:35:58
    #37707612
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
авторВ связи с тем как в Java принято ставить скобки, то для глаза нет разницы между такими блоками.
А еще беда если проект на нескольких языках - в одних есть скобки, в других нет, и такая бага чаще вылавливается(точнее происходит а потом вылавливается)
...
Рейтинг: 0 / 0
15.03.2012, 22:37:51
    #37707613
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
BlazkowiczIDE сохраняет в одной кодировке. Компилятор работает в другой
я так понял, если компилить во внешнем компиляторе без ide.
...
Рейтинг: 0 / 0
15.03.2012, 22:39:53
    #37707615
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
выходит, что скобки - "если кто-то невнимательный".
OK
...
Рейтинг: 0 / 0
15.03.2012, 22:42:58
    #37707616
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
Petro123выходит, что скобки - "если кто-то невнимательный".
OK

Это как в HTML не закрывать теги
...
Рейтинг: 0 / 0
15.03.2012, 22:47:01
    #37707623
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
забыл ник,
не совсем:
- там можно не закрывать (парсер допускает ошибки)
- тут чисто вопрос корпоративной политики. Как внутри решили - так и будет.
Технических причин ставить скобки (begin ...end) я не увидел.
...
Рейтинг: 0 / 0
15.03.2012, 22:50:43
    #37707626
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
Petro123Технических причин ставить скобки (begin ...end) я не увидел.
А технические причины вообще разделять текст на строки, а не писать весь код в одну строку, видишь?
...
Рейтинг: 0 / 0
15.03.2012, 22:53:56
    #37707630
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
Edd.DragonPetro123Технических причин ставить скобки (begin ...end) я не увидел.
А технические причины вообще разделять текст на строки, а не писать весь код в одну строку, видишь?
а у нас так и принято :)
if aaaa else bbbbb
в строго оговорённых случаях, без маразма.
...
Рейтинг: 0 / 0
15.03.2012, 23:04:55
    #37707640
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
Petro123Edd.Dragonпропущено...

А технические причины вообще разделять текст на строки, а не писать весь код в одну строку, видишь?
а у нас так и принято :)
if aaaa else bbbbb
в строго оговорённых случаях, без маразма.
Вот в том то и дело. Что компилятору ни твои лишние пробелы, ни переводы строки не нужны. Но код ты ж не только для компилятора пишешь, удовлетворяя техническим требованиям, но и для чтения, удовлетворяя человеческим требованиям.

Никто не ищет причину, почему нельзя писать 10 if-ов в одну строку. И таки можно - на здоровье.

Тут то же самое. Можно не обрамлять. Но сосбтвенно какая разница, одну строку ты опускаешь под if или 10? Глаз привык видеть либо if в одну строку, либо if со скобками. Мозг привык, при необходимости, добавлять новых строк под уже имеющиеся. Вот и чудесно. Повод поставить скобки есть хоть какой-то. А не ставить - по большому счету повода нет.
...
Рейтинг: 0 / 0
15.03.2012, 23:14:32
    #37707653
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачи на числа. Решение. Покритикуйте. (часть #1)
Edd.Dragon Глаз привык видеть либо if в одну строку, либо if со скобками.
мммм. У кого привык?
Я не спорю, я из Delphi и С++ пришёл.
Там все большинство аккуратных пишут
Код: java
1.
2.
3.
4.
5.
6.
7.
if ddd then
begin
  cccc;
  dddd;
end
else
  kkkk;


Кроме того, я в нескольких фирмах видел свои правила скобок.
В Java многое по другому. Это я в курсе.
авторМозг привык, при необходимости, добавлять новых строк под уже имеющиеся
Да, мностроковость кода - фирменная черта Java.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Задачи на числа. Решение. Покритикуйте. (часть #1) / 25 сообщений из 117, страница 1 из 5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]