Estou começando em java e queria fazer um programa para ler 100 valores para uma votação com o comando for.
Mas o problema é que eu não sei o comando ler, o valor lido sera uma integer.
public class Teste {
int a,b,v;
void informa(){
System.out.println("a recebeu " + a + " votos");
System.out.println("a recebeu " + b + " votos");
}
}
public class Teste2 {
public static void main(String[] args){
Teste votar = new Teste();
int i;
for (i=1;i<=100;i++){
System.out.println(" 1 para votar em a");
System.out.println(" 2 para votar em b");
// aki vai o comando ler, o valor informado vai ir para variavel votar.v
if (votar.v==1){
votar.a++;}
if (votar.v==2){
votar.b++;}
}
votar.informa();
}
}
se puder explicar detalhadamente eu fico agradecido, pois estou começando em uma linguagem orientada a objetos. 
Bom, se você quiser ler o valor via teclado, você pode usar a classe scanner.
Exemplo
import java.util.Scanner;
public class Inicio {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
i = entrada.nextInt();
}
}
Declara um scanner, atribui a ele um new Scanner, no construtor você passa o valor de onde vao vir os dados, poderia ser um arquivo de texto por exemplo, nesse caso o System.in serve para dizer que o padrão é o teclado. deu pra entender?
Nossa, mais simples do que eu esperava, Muito obrigado deu certinho 
Simples e errado. O correto, quando usar o Scanner para ler do teclado, é usar sempre o comando nextLine():
[code]import java.util.Scanner;
public class Inicio {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
i = Integer.parseInt(entrada.nextLine());
}
}
[/code]
dessa eu nao sabia. Me tire uma duvida, se eu só vou ler inteiros, porq usar o nextLine() ? e quando eu devo usar esse metodo nextInt()?
Você deve lembrar que todo comando do console termina em \n, mesmo que o usuário digite somente um inteiro, ao final, ele digitará enter para finalizar a linha.
Caso você use o nextInt() você lerá o inteiro da linha de comando e deixará o \n sem leitura.
Esse \n ficará no buffer interno do Scanner. Se o próximo comando for um nextLine(), apenas esse \n será lido, e você terá a impressão de que o Scanner não funcionou (ele retorna vazio imediatamente, sem nem sequer pedir dado nenhum do usuário).
Isso realmente ja aconteceu comigo, e eu tive que descobrir isso na pratica.
mas supondo que eu só va ler inteiros, eu posso usar o nextInt, certo?
Até pode, mas sistemas profissionais tem a mania de crescer.
Aí é melhor não contar com a sabedoria do próximo programador a mexer no código, imaginando que ele vá alterar todos os nextInt() se tiver que colocar um nextLine() no programa, hehehe.
Só explicando, um novo nextInt() ignoraria o \n que já tem no buffer, leria o próximo inteiro e pararia com o próximo \n no buffer.
Entendi!
Obrigado pela explicação, é bom saber as boas praticas alem da Tecnica pura.
Valews!
[quote=ViniGodoy]Você deve lembrar que todo comando do console termina em \n, mesmo que o usuário digite somente um inteiro, ao final, ele digitará enter para finalizar a linha.
Caso você use o nextInt() você lerá o inteiro da linha de comando e deixará o \n sem leitura.
Esse \n ficará no buffer interno do Scanner. Se o próximo comando for um nextLine(), apenas esse \n será lido, e você terá a impressão de que o Scanner não funcionou (ele retorna vazio imediatamente, sem nem sequer pedir dado nenhum do usuário).[/quote]
PQP 10 mil vezes.
Quando estava bem no comecinho aprendendo java e fazendo os exercícios tive vários problemas que acontecia exatamente o que você está falando neste post. E eu nem entendia porque acontecia isso e em um post meu uma vez ninguem conseguiu me explicar também ¬¬ Mas o que importa é que agora entendi algo que acontecia lá atrás.