Como obter valor flutuante da string

Supondo que sua entrada sempre tenha um espaço antes do número e um Ndepois dele:

String t = "> 12.4N-m/kg.";
Pattern p = Pattern.compile("^.*\\s(\\d+\\.\\d)N.*$");
Matcher matcher = p.matcher(t);
if (matcher.matches()) {
    System.out.println(Float.valueOf(matcher.group(1)));
}
Resposta 1

Tente usar isto:

Float.valueOf(str.substring(0,4));
Resposta: 2

O código a seguir funcionará com a suposição de que a string de entrada sempre começa "> "e tem o prefixo de flutuação apropriado.

int i=2;
while(Character.isDigit(str.charAt(i)) || str.charAt(i) == '.') 
    i++;
float answer = Float.valueOf(str.substring(2,i));
Resposta: 3

Tente usar esta expressão regular

^[-+]?[0-9]*\.?[0-9]+$
Resposta: 4

Eu acho que as respostas anteriores deixam de fora dois pontos:

  • Existem números mais complicados do que isso.
  • Pode haver um dígito na unidade que não termine no flutuador.

Por causa do segundo ponto, não acho que substituir tudo que não seja um dígito seja uma boa ideia. É melhor procurar o primeiro número na string:

Matcher m = p.matcher(str);
System.out.println("Input: "+ str);
if (m.find()) {
    System.out.println("Found: "+ m.group());
    try {
        System.out.println("Number: "+ Float.parseFloat(m.group()));
    } catch (Exception exc) {
        exc.printStackTrace();
    }
}

Como alternativa, você poderia fazer algo como

int i, j;
for (i = 0; i < str.length(); ++i) {
    if (mightBePartOfNumber(str.charAt(i))) {
        break;  
    }       
}       
for (j = i; j < str.length(); ++j) {
    if (!mightBePartOfNumber(str.charAt(j))) {
        break;  
    }       
}       
String substr = str.substring(i, j);
System.out.println("Found: "+ substr);
try {   
    System.out.println("Number: "+ Float.parseFloat(substr));
} catch (Exception exc) {
    exc.printStackTrace();
}       

com um ajudante

private static boolean mightBePartOfNumber(char c) {
    return ('0' <= c && c <= '9') || c == '+' || c == '-' || c == '.' || c == 'e' || c == 'E'; 
}       
Resposta: 5

Para projetos de tamanho decente, fui informado de que, quando você tem aulas estendendo o JPanels, a melhor prática é usar classes aninhadas para implementar os ouvintes. Por exemplo, eu poderia ter uma aula ...

De alguma forma, pergunta estúpida, tenho que admitir - espero que não me custe muitos pontos. Para deixar claro: eu também ficaria feliz se você puder me ajudar a encontrar o motivo das falhas. Eu não esperaria um ...

Estou tentando retornar um JSON no meu aplicativo Spring MVC 3, mas está falhando para Joda DateTimeFormatter com.fasterxml.jackson.databind.JsonMappingException: nenhum serializador encontrado para a classe org.joda ....

Eu quero extrair quadros de um vídeo e aplicar alguns filtros, como gabor / hough etc. Qual biblioteca Java seria perfeita para lidar com todos os tipos de codificações de vídeo? Eu estive olhando ...