E aí pessoal, tô precisando de uma ajuda. Tenho que desenvolver minha própria API e há um caso que tenho que transformar string para int sem usar o Integer.parseInt, exemplo: "12" == 12 ou "abc12" == 12.
Tô tentando aqui mas não consigo pensar em muita coisa sem usar o Integer.parseInt :c E ah, vou mostrar como estou fazendo… Alguma ideia? Obrigada.
[code]public static int strToIntSpace(String s){
int inicio = -1, fim = 0, n = 0, x = 0;
String num = "";
char [] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++ ){
if (chars[i] != ASCII_SPACE) {
if (inicio == -1) {
inicio = i;
}
fim = i;
}
}
for (int i = inicio; i <= fim; i++ ){
num += chars[i];
}
n = Integer.parseInt(num);
return n;
}[/code]
[code]private static final int ASCII_NUMBER_BEGIN = 48;
private static final int ASCII_NUMBER_FINAL = 57;
private static final int ASCII_SPACE = 32;
private static final int ASCII_LOW_START_INDEX = 97;
private static final int ASCII_LOW_END_INDEX = 122;
public static int strToIntSpaceLetters(String s){
int inicio = -1, fim = 0, numero = 0, ctd = 0, t = 0;
char[] chars ={’’, ‘1’, ‘2’, ‘3’, ‘a’, ‘b’, ‘c’};
//entra " 123abc" e tem que sair 123
for (int i = 0; i < chars.length; i++) {
if (chars[i] != ASCII_SPACE && chars[i] >= ASCII_NUMBER_BEGIN
&& chars[i] <= ASCII_NUMBER_FINAL) {
if (inicio == -1) {
inicio = i;
}
fim = i;
}
}
char c[] = new char[(fim - inicio) +1];
for (int i = 0; i < chars.length; i++) {
if (chars[i] >= ASCII_NUMBER_BEGIN
&& chars[i] <= ASCII_NUMBER_FINAL) {
c[t] = chars[i];
t++;
}
}
int aux = c.length - 1;
for (int i = 0; i < c.length - 1; i++) {
numero += (c[i] - 48) * (Math.pow(10, aux));
aux--;
}
numero += c[c.length - 1] - 48;
System.out.println(numero);
[quote=GabbiRold][quote=Ataxexe]Como diria o Cebolinha: “Calálio, Cascão!”
Por que raios você não poderia usar o Integer.parseInt ? Quer reescrever a API do Java?[/quote]
É uma atividade de aula onde devo criar minha própria API e nesse caso eu não poderia usar o Integer.parseInt(). Foi um desafio e tanto rs.[/quote]
Desafio? Isso é uma afronta… Claro que existem situações em que o uso de partes da API serão substituídos por coisas assim, mas isso é um exercício e tanto.
Obrigado por compartilhar a respostas.
Converte de string para int sem usar Integer.parseInt()
*/
public static int strToIntSpaceLetters(String s){
long valor = Long.parseLong(s);
return (int)valor;
}[/code]