Найти - Пользователи
Полная версия: Наглядность кода PHP, Python, Java
Начало » Флейм » Наглядность кода PHP, Python, Java
1 2 3 4
Mkdir
Общался с коллегой по джабберу и мне в голову пришёл один пример.

У нас есть массив с некоторым количеством элементов. Любых, не важно каких.
Задача: Нужно взять случайный элемент.

PHP:
$arr = array('a', 'b', 3, 99, 'preved', 'medved');
$res = $arr[mt_rand(0, count($arr)-1)];
Python:
arr = ['a', 'b', 3, 99, 'preved', 'medved']
res = random.choice(arr)
Java:
List lst = new ArrayList(112, 576, 232, 652, 992);
int num = Random.instance().new(lst.size());
Object obj = lst.get(num);
j2a
в питоне еще import random надо сделать :)
Mkdir
j2a
в питоне еще import random надо сделать :)
Ну импорты я опустил. В Java тоже нужно делать импорт.
alafin
Я не знаю кто писал код на Java, но он однозначно не правилен.
Mkdir
alafin
Я не знаю кто писал код на Java, но он однозначно не правилен.
Код писал знакомый Java-программер. Сам-то я в жабе не шарю.
А что не правильно?
alafin
Как минимум на Java нужно писать(то что мне в голову сразу пришло):

import java.util.*;
public class Temp {
public static void main(String args){
List lst = new ArrayList();
lst.add(112);
lst.add(576);
lst.add(232);
lst.add(652);
lst.add(992);
int num = (int) (Math.random() * (lst.size()));
Object obj = lst.get(num);
}
}

или хотябы(без импортов):

public class Temp {
public static void main(String args){
java.util.List lst = new java.util.ArrayList();
lst.add(112);
lst.add(576);
lst.add(232);
lst.add(652);
lst.add(992);
int num = (int) (Math.random() * (lst.size()));
Object obj = lst.get(num);
}
}

Mkdir
Вот узнал у граммотного человека:
import java.util.Random;
import junit.framework.TestCase;

public class ArrayTest extends TestCase{
public void testArray() {
String[] strings = {"1", "2"};
Random random = new Random();
int i = random.nextInt(strings.length);
String item = strings[i];
System.out.println(item);
}
}
alafin
В Java так как и в C# код должен обязательно заключаться в классы и должна быть в одном из них точка входа:
public static void main(String args)
а import-ы необязательны, можно указывать полное имя пакета для класса и все будет работать, как я показал выше.
alafin
Mkdir
В этом коде как минимум 1 лишний импорт junit.framework.TestCase; (на сколько я знаю junit - относится к юнит тестам) и одно лишнее наследование extends TestCase (судя по всему этот код просто выдрали с какого-то проекта) , а так код в полне рабочий, только вот нужно заменить public void testArray() на public static void main(String args) . Ладно не будем в даваться в дебри т.е. в Java ;)
Mkdir
alafin
Ладно не будем в даваться в дебри т.е. в Java ;)
+1. Java как язык и без того страшен. Еще не хватало посвящать ужасам Java этот замечательный форум :-)
А то народ распугаем.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB