/**
* @param args
*/
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("Digite um numero inteiro enrte 1 e 20 ");
int n =sc.nextInt();
}
///este metodo supostamente de veria fazer a tabuada
public static int taBB(int num,Scanner sc){
int n =sc.nextInt();
System.out.println("Digite um numero inteiro entre 1 e 20");
if (n<=20){
for(int i=1;i<=n;i++)
System.out.println(num);
}
return num;
}
///// este metodo deveria se o numero fosse maior que 20 mandar repetir a entarda
//"Digite um numero inteiro
public static int tesTa(int n,Scanner sc ){
if (n>20||n==0){
System.out.println(" Digie um numero inteiro entre 1 e 20 ");
sc.nextInt();
}
return n;
}
}
[/code]
alguem me pode ajudar com este código n esta funcionando , pois estou com duvidas de como os dados q entram do
teclado passam a ser testados nos metodos e como isso retorna com o resultado .Por exemplo se o numero for >20ou =0 deveria
pedir novamente ao utilizador que digitasse novamente um numero entre 1 e 20 ,deveria fazer isso ate o numero estar entre 1 e 20 ,
quaando estivesse deveria fazer a tabuada do numero ate o 20 …11,…12…119…alguma dica para consertar isto
Ulysses seu outro codigo me ajudou imenso …maas eu gostaria de criar metodos,sou iniciante em java e estou tendo alguma dificuldade com os metodos como crialos e a forma de utiliza-los tens alguma dica pra mim …Obrigado pela ajuda …
import java.util.Scanner;
public class Tabuada {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num; //o número da tabuada
System.out.println("Forneça um número de 0 a 9");
num = in.nextInt();
int[] resultado = fazTabuada(num);
for(int i = 0; i < resultado.length; i++ ) { //este loop imprime os valores
System.out.println(resultado[i]);
}
}
public static int[] fazTabuada(int num) {
int[] resultado = new int[NUMERO_DE_OPCOES]; //cria a array para armazenar os valores da tabuada
for (int i=0; i<resultado.length; i++) { //calcula os valores da tabuada
resultado[i] = num*i;
}
return resultado;
}
final static int NUMERO_DE_OPCOES = 10; //no caso vc queria fazer com 20, não entendi ao certo como seria
}
import java.util.Scanner;
public class Tabuada {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num;
do { //esta estrutura receberá um valor, e continuará pedindo pelo valor até que ele esteja na condição solicitada
System.out.println("Forneça um número de 0 a 9");
num = in.nextInt();
if (num < 0 || num > 9) //este if emite a mensagem de erro caso o número esteja fora da condição solicitada
System.out.println("O número deve ser entre 0 e 9");
} while (num < 0 || num > 9);
int[] resultado = fazTabuada(num);
for (int i = 0; i < resultado.length; i++) {
System.out.println(resultado[i]);
}
}
public static int[] fazTabuada(int num) {
int[] resultado = new int[NUMERO_DE_OPCOES];
for (int i = 0; i < resultado.length; i++) {
resultado[i] = num * i;
}
return resultado;
}
final static int NUMERO_DE_OPCOES = 10;
}
Para entender melhor o código é interessante que você estude a estrutura de repetição chamada DO-WHILE, que executa uma vez o código, e continua executando enquanto a condição for válida! É útil se vc quiser que o código seja executado uma vez mesmo antes da condição ser testada.
Ela se aplica no nosso caso, pq antes de testarmos o valor, precisamos que ele seja lido.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
PrintStream s = System.out;//cria como se fosse um "atalho" para System.out
int n = 0;
do {
s.println("Digite um numero inteiro enrte 1 e 20 ");
n = sc.nextInt();
} while (testa(n));// se receber false irá parar de pedir o número
s.print(taBB(n));
}
public static String taBB(int num) {
String aux = "";/*
* irei utilizar para armazenar os dados e retornar,
* aqui poderia ser feito um método com retorno void e
* já imprimir direto os dados.
*/
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= num; j++) {
aux += i + " x " + j + " = " + i*j + "\t";
}
aux += "\n";
}
return aux;
}
public static boolean testa(int n) {
/* irei retornar false se o número for válido e true se for inválido; */
if (n > 20 || n <= 0) {
return true;
}
return false;
}
}[/code]
Uma ferramenta que acho muito interessante para quem está comecando a programar é o debugador, com ele cocê consegue entender como ocorre a passagem de informações internamente, verifique a possibilidade de estar usando algum, eu pessoalmente prefiro o do eclipse.
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num; // o número da tabuada
System.out.println("Forneça um número de 0 a 9");
num = in.nextInt();
fazTabuada(num);
}
public static void fazTabuada(int num) {
// calcula os valores da tabuada
for (int i = 1; i <= NUMERO_DE_OPCOES; i++) {
System.out.println(num * i);
}
}
// no caso vc queria fazer com 20, não entendi ao certo como seria
final static int NUMERO_DE_OPCOES = 10;
}[/code]
Algumas modificações para melhorar um pouco mais a performance e a leitura do código.
então João, como disse, são formas diferentes de resolver um exercicio, porém eu também, neste caso iria colocar a validação junto com a solicitação do dado, mas como o problema dele é com os métodos fiz desta forma.
Bruno, não gosto muito de colocar métodos como o System.out.println dentro de métodos.
Prefiro retornar valores, e utilizar tais métodos apenas no método de execução.
Recebi recomendações para fazer assim, alguém saberia explicar melhor por que?
Acredito que seja porque dependendo da aplicação do programa tais métodos podem não ser disponíveis, e aí temos que modificar o método.
As duas visões estão corretas ao meu ver.
Porém nós sabemos todo o escopo e que não haverão mudanças aqui.
As mudanças que fiz foram pra melhorar a performance evitando de iterar sobre o array duas vezes.