Índice:
- Usando argumentos de linha de comando em um programa Java
- Verificar o número certo de argumentos da linha de comando
Vídeo: Curso de Java 06: Passando argumentos para o programa 2024
Era uma vez, a maioria dos programadores Java usava uma interface de desenvolvimento baseada em texto. Eles teceram um comando em uma janela de aparência simples, geralmente com texto branco em um fundo preto.
Que maçante!A janela de aparência simples passa pelos vários nomes, dependendo do tipo de sistema operacional que você usa. No Windows, uma janela de texto desse tipo é uma janela de prompt de comando. Em um Macintosh e no Linux, esta janela é o terminal. Algumas versões do Linux e UNIX chamam essa janela de um shell.
De qualquer forma, de volta aos tempos antigos, você poderia escrever um programa que sugira informações extras quando você digitou o comando para iniciar o programa.
Quando você inicia MakeRandomNumsFile, você digita algumas informações extras.Na imagem acima, o programador usa java MakeRandomNumsFile para executar o programa
MakeRandomNumsFile
. Mas o programador segue java MakeRandomNumsFile com duas informações extras: MyNumberedFile. txt e 5 . Quando o programa
MakeRandomNumsFile
é executado, o programa sugere duas informações extras e as usa para fazer o que o programa tem a fazer. O programa sugere
MyNumberedFile. txt 5
, mas em outra ocasião, o programador pode digitar SomeStuff 28 ou BunchONumbers 2000 . As informações extras podem ser diferentes sempre que você executar o programa.
A próxima pergunta é: "Como um programa Java sabe que é suposto snarf up informações extras cada vez que ele é executado? "Desde que você começou a trabalhar com o Java, você viu este
String args []
no cabeçalho de cada método
main
. Bem, já é tempo de descobrir o que é isso. O parâmetro
args []
é uma matriz de
String
valores. Esses
String
são chamados argumentos da linha de comando.
Alguns programadores escrevem
public static void main (String args [] )
e outros programadores escrevem
public static void main (String [] args)
De qualquer forma,
args
é uma matriz de
String
valores.
Usando argumentos de linha de comando em um programa Java
Este bit de código mostra como usar argumentos de linha de comando.
É assim que você gera um arquivo de números
importar java. util. Aleatória;
importar java. io. PrintStream;
importar java. io. IOException;
classe pública MakeRandomNumsFile {
public static void main (String args [] ) lança IOException {
Gerador aleatório = novo Random ();
se (args.comprimento <2) {
Sistema. Fora. println ("Usage: MakeRandomNumsFile filename number");
Sistema. saída (1);
}
PrintStream printOut = novo PrintStream (args [0]);
int numLines = Integer. ParseInt (args [1]);
para (int count = 1; count <= numLines; count ++) {
printOut. println (generator. nextInt (10) + 1);
}
printOut. fechar();
}
}
Se um programa específico esperar alguns argumentos de linha de comando, você não pode iniciar o programa executando da mesma forma que você iniciaria a maioria dos outros programas normais. A maneira como você alimenta os argumentos da linha de comando para um programa depende do IDE que você está usando - Eclipse, NetBeans ou o que for. Allmycode. com tem instruções para alimentar argumentos para programas usando vários IDEs.
Quando o código começa a ser executado, a matriz
args
obtém seus valores. Com a execução exibida na imagem acima, o componente da matriz
args [0]
assume automaticamente o valor
"MyNumberedFile. Txt"
e
args [1]
automaticamente se torna
"5"
. Portanto, as instruções de atribuição do programa acabam tendo o seguinte significado:
PrintStream printOut = new PrintStream ("MyNumberedFile. Txt");
int numLines = Integer. ParseInt ("5");
O programa cria um arquivo chamado
MyNumberedFile. txt
e define
numLines
para
5
. Então, mais tarde, no código, o programa gera aleatoriamente cinco valores e coloca esses valores em
MyNumberedFile. txt
. Uma série do programa dá-lhe isso.
Depois de executar o código, onde você pode encontrar o novo arquivo (
MyNumberedFile. Txt
) em seu disco rígido? A resposta depende de muitas coisas diferentes. Se você usa um IDE com programas divididos em projetos, o novo arquivo está em algum lugar na pasta do projeto. De uma forma ou de outra, você pode alterar o Listado 11-7 para especificar um nome de caminho completo - um nome como
"c: \ Usuários \ Nome_do_Portugal \ MyNumberedFile. Txt"
ou
"/ Usuários / MyName / Documents / MyNumberedFile. Txt"
.
No Windows, os nomes do caminho do arquivo contêm caracteres de barra invertida. E em Java, quando você deseja indicar uma barra invertida dentro de um literal de Cadeia de caracteres dupla, você usa uma barra invertida dupla. É por isso que "c: \ Users \ MyName \ Documents \ MyNumberedFile. txt "contém pares de barras invertidas. Em contrapartida, os caminhos dos arquivos nos sistemas operacionais Linux e Macintosh possuem barras diagonicas para a frente. Para indicar uma barra inclinada em uma Cadeia de caracteres Java, use apenas uma barra inclinada para a frente.
Observe como cada argumento da linha de comando é um valor
String
. Quando você olha
args [1]
, você não vê o número 5 - você vê a string
"5"
com um caractere de dígito nele. Infelizmente, você não pode usar
"5"
para fazer qualquer contagem. Para obter um
int
valor de
"5"
, você deve aplicar o método
parseInt
.
O método
parseInt
vive dentro de uma classe chamada Inteiro. Então, para chamar
parseInt
, prefira o nome parseInt com a palavra Inteiro. A classe
Integer
possui todos os tipos de métodos úteis para fazer coisas com
int
valores.
Em Java, Integer é o nome de uma classe, e int é o nome de um tipo primitivo (simples). As duas coisas estão relacionadas, mas não são as mesmas. A classe
Integer
possui métodos e outras ferramentas para lidar com os valores
int
.
Verificar o número certo de argumentos da linha de comando
O que acontece se o usuário cometer um erro? E se o usuário esquecer de digitar o número 5 na primeira linha w quando você inicia
MakeRandomNumsFile
?
Em seguida, o computador atribui
"MyNumberedFile. Txt"
a
args [0]
, mas não atribui nada a
args [1]
. Isto é mau. Se o computador atingir a indicação
int numLines = Integer. ParseInt (args [1]);
o programa falha com um
ArrayIndexOutOfBoundsException não amigável
.
O que você faz sobre isso? Você verifica o comprimento da matriz
args
. Você compara
args. comprimento
com
2
. Se o
args array
tiver menos de dois componentes, você exibirá uma mensagem na tela e sairá do programa.
Apesar da verificação de
args. comprimento
, o código ainda não é resistente a falhas. Se o usuário digitar cinco em vez de 5, o programa recebe um
NumberFormatException
. O segundo argumento da linha de comando não pode ser uma palavra. O argumento deve ser um número (e um número inteiro, naquele). Você pode adicionar declarações para tornar o código mais à prova de balas.
Quando você está trabalhando com argumentos de linha de comando, você pode inserir um valor
String
com um espaço em branco nele. Basta incluir o valor em aspas duplas. Por exemplo, você pode executar o código acima com os argumentos
"My Big Fat File. Txt" 7
.