Да, это легко и понятно. Определите первые цвета по умолчанию.
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();
Console.Clear()
важно установить новые цвета консоли. Если вы не сделаете этот шаг, вы можете увидеть комбинированные цвета, когда задаете значения с помощью Console.ReadLine()
.
Затем вы можете изменять цвета при каждой печати:
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Red text over black.");
Когда завершите свою программу, помните, как сбросить цвета консоли на финише:
Console.ResetColor();
Console.Clear();
Теперь с netcore возникает другая проблема, если вы хотите «сохранить» пользовательский интерфейс, потому что терминал имеет разные цвета для каждой оперативной системы.
Я создаю библиотеку, которая решает эту проблему с помощью текстового формата: цвета, выравнивание и многое другое. Вы можете использовать и вносить свой вклад.
Unfortunately, I don't believe there really is a better way of doing this due to the nature of Java's handling of primitive types, boxing, arrays and generics. In particular:
List.toArray
won't work because there's no conversion from Integer
to int
int
as a type argument for generics, so it would have to be an int
-specific method (or one which used reflection to do nasty trickery).I believe there are libraries which have autogenerated versions of this kind of method for all the primitive types (i.e. there's a template which is copied for each type). It's ugly, but that's the way it is I'm afraid :(
Even though the Arrays
class came out before generics arrived in Java, it would still have to include all the horrible overloads if it were introduced today (assuming you want to use primitive arrays).
Самый простой способ сделать это - использовать Apache Commons Lang . У него есть удобный класс ArrayUtils, который может делать то, что вы хотите. Используйте метод toPrimitive
с перегрузкой для массива Integer
s.
List<Integer> myList;
... assign and fill the list
int[] intArray = ArrayUtils.toPrimitive(myList.toArray(new Integer[myList.size()]));
Таким образом, вы не изобретаете колесо. В Commons Lang есть очень много полезных вещей, которые Java упустила. Выше я решил создать целочисленный список нужного размера. Вы также можете использовать статический целочисленный массив нулевой длины и позволить Java выделить массив правильного размера:
static final Integer[] NO_INTS = new Integer[0];
....
int[] intArray2 = ArrayUtils.toPrimitive(myList.toArray(NO_INTS));
Чтобы просто найти привязки клавиш для команды, вы можете использовать функцию emacs help "where-is"
C-h w command-name
Если для команды установлено несколько привязок, все они будут перечислены.
Для обратного, учитывая последовательность клавиш, вы можете ввести
C-h k key-sequence
, чтобы получить команду, которая будет запущена.
Вы можете получить подробную информацию о команде, а также о любой определенной неинтерактивной функции, набрав
C-h f function-name
, который предоставит вам подробную информацию о функции, включая любые привязки клавиш для нее, а
C-h v variable-name
предоставит вам информацию о любой (связанной) переменной. Карты клавиш хранятся в переменных, однако коды клавиш хранятся в необработанном формате. В качестве примера попробуйте Ch v isearch-mode-map
.
Для получения дополнительной помощи,
На самом деле нет способа "объединить в одну строку" то, что вы пытаетесь сделать, потому что toArray возвращает Object [], и вы не можете преобразовать Object [] в int [] или Integer [] в int []
попробуйте также Dollar (проверьте эту ревизию):
import static com.humaorie.dollar.Dollar.*
...
List<Integer> source = ...;
int[] ints = $(source).convert().toIntArray();
В дополнение к Commons Lang, вы можете сделать это с помощью метода Guava Ints.toArray(Collection
:
List<Integer> list = ...
int[] ints = Ints.toArray(list);
Это избавит вас от необходимости самостоятельно выполнять промежуточное преобразование массива, которое требуется в эквиваленте Commons Lang.