C# ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como retornar a quantidade de dimensões de uma matriz em C# usando a propriedade RankQuantidade de visualizações: 8580 vezes |
|
A propriedade Rank de um array do C# pode ser usada para obtermos a quantidade de dimensões de uma matriz (unidimensional, bidimensional, tridimensional, etc). Esta propriedade retorna um inteiro contendo a quantidade de dimensões. Veja o código para o exemplo:
using System;
namespace Estudos {
class Program {
static void Main(string[] args) {
// cria uma matriz de duas dimensões: quatro linhas
// e duas colunas
int[,] matriz = new int[4, 2];
// obtém a quantidade de dimensões
int dimen = matriz.Rank;
Console.WriteLine("Este array possui " + dimen + " dimensões.");
Console.WriteLine("\n\nPressione uma tecla para sair...");
Console.ReadKey();
}
}
}
Ao executar este código C# nós teremos o seguinte resultado: Este array possui 2 dimensões. |
Java ::: Pacote java.lang ::: Character |
Como usar o método isDigit() da classe Character da linguagem Java para verificar se um caractere é um dígito de 0 a 9Quantidade de visualizações: 9935 vezes |
|
Em algumas situações, principalmente quando estamos validando dados informados pelo usuário, pode ser necessário verificar se um determinado caractere é um dígito de 0 a 9. Isso pode ser feito por meio do método isDigit() da classe Character. Este método estático recebe um caractere como argumento e retorna true se o caractere for um dígito e false em caso contrário. Veja um exemplo no qual lemos um caractere informado pelo usuário e informamos se o mesmo é um dígito ou não:
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
// vamos pedir ao usuário para informar um caractere qualquer
char caractere = JOptionPane.showInputDialog("Informe um caractere:").charAt(0);
// vamos testar se o caractere informado é um dígito
if(Character.isDigit(caractere)){
JOptionPane.showMessageDialog(null, "O caractere informado é um dígito");
}
else{
JOptionPane.showMessageDialog(null, "O caractere informado não é um dígito");
}
}
}
Uma outra forma de verificar se um determinado caractere é um dígito é testar se o retorno de uma chamada ao método estático getType() da classe Character é a constante DECIMAL_DIGIT_NUMBER, também definida na classe Character. Veja uma modificação do exemplo anterior:
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
// vamos pedir ao usuário para informar um caractere qualquer
char caractere = JOptionPane.showInputDialog("Informe um caractere:").charAt(0);
// vamos testar se o caractere informado é um dígito
if(Character.getType(caractere) == Character.DECIMAL_DIGIT_NUMBER){
JOptionPane.showMessageDialog(null, "O caractere informado é um dígito");
}
else{
JOptionPane.showMessageDialog(null, "O caractere informado não é um dígito");
}
}
}
Finalmente, veja como ler uma string e verificar se ela contém apenas dígitos de 0 a 9:
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
// vamos pedir ao usuário para informar uma string
String str = JOptionPane.showInputDialog("Informe uma string:");
// vamos verificar se a string contém apenas dígitos de 0 a 9
boolean soDigitos = true;
// percorre todos os caracteres da string
for(int i = 0; i < str.length(); i++){
if(!Character.isDigit(str.charAt(i))){
soDigitos = false;
break;
}
}
if(soDigitos){
JOptionPane.showMessageDialog(null, "A string contém apenas dígitos");
}
else{
JOptionPane.showMessageDialog(null, "A string não contém somente dígitos");
}
}
}
|
C ::: Dicas & Truques ::: Ponteiros, Referências e Memória |
Como usar ponteiros void na linguagem C - Curso de Linguagem C para iniciantesQuantidade de visualizações: 17100 vezes |
Em dicas desta seção você aprendeu que é possível criar ponteiros para os mais diferentes tipos. Veja:int *ponteiro_int; float *ponteiro_float; double *ponteiro_double; Existe, porém, um tipo de ponteiro que pode ser usado com todos os tipos de dados existentes ou ainda a serem criados. Este tipo é conhecido como void, ou seja, um ponteiro genérico e pode ser declarado da seguinte forma: void *ponteiro; // ponteiro genérico Veja um trecho de código no qual usamos um ponteiro genéríco para apontar para variáveis de diferentes tipos:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int valor = 20;
float valor2 = 5.23;
void *ponteiro; // ponteiro genérico
ponteiro = &valor; // aponta para um inteiro
printf("%d\n", *(int *)ponteiro);
ponteiro = &valor2; // aponta para um float
printf("%0.2f\n", *(float *)ponteiro);
system("PAUSE");
return 0;
}
Uma observação importante é a necessidade de uma conversão explícita (cast) no momento de desreferenciar um ponteiro genéríco. Neste caso ele precisa ser convertido para o tipo de ponteiro sendo usado no momento. Veja:
printf("%d\n", *(int *)ponteiro);
A parte (int *)ponteiro converte o ponteiro genérico em um ponteiro do tipo int e o símbolo * externo é usado para desreferenciar. Se essa conversão não for feita teremos um aviso e erro na maioria dos compiladores. Veja:
printf("%d\n", *ponteiro);
[Warning] dereferencing 'void *' pointer
invalid use of void expression
Embora essa conversão seja necessária quando estamos desreferenciando um ponteiro genérico, podemos abrir mão dela na atribuição de um ponteiro genérico a um ponteiro de um tipo específico:
ponteiro = &valor; // aponta para um inteiro
int *ponteiro_int = ponteiro;
printf("%d\n", *ponteiro_int);
Para finalizar, saiba que as funções malloc() e calloc() retornam ponteiros void, ou seja, ponteiros genéricos que podem ser atribuídos a ponteiros de qualquer tipos. Neste caso, o ponteiro retornado por estas funções aponta para a primeira posição do bloco de memória requisitada. |
Java ::: Dicas & Truques ::: Gráficos |
Como desenhar em um JComponent do Java Swing (JLabel, JButton, JPanel, etc) usando o método paintComponent()Quantidade de visualizações: 10430 vezes |
|
A classe JComponent possui um método chamado paintComponent(Graphics g) que recebe um objeto da classe Graphics que pode ser usado para desenhar na superfície do componente. Desta forma, qualquer componente que herda de JComponent pode ser usado para esta finalidade. Para demonstrar como isso é feito, veja um trecho de código no qual desenhamos uma linha em um JLabel e o anexamos à janela do aplicativo. Observe a criação de uma classe personalizada que herda de JLabel:
import java.awt.*;
import javax.swing.*;
public class Estudos extends JFrame{
public Estudos() {
super("Desenhando em um JLabel");
Container c = getContentPane();
// Cria o JLabel
MinhaLabel label = new MinhaLabel();
c.add(label);
setSize(350, 250);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
}
}
// classe personalizada que permite desenhar
class MinhaLabel extends JLabel{
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.drawLine(0, 0, 200, 200);
}
}
|
Nossas 20 dicas & truques de programação mais populares |
Você também poderá gostar das dicas e truques de programação abaixo |
|
wxWidgets - Como usar a classe wxFrame para criar a janela principal de suas aplicações C++ wxWidgets GNU Octave - GNU Octave para Álgebra Linear - Como calcular o determinante de uma matriz usando a função det() do GNU Octave |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






