Ausgabe
Ich habe den folgenden Code, in dem ich am Ende eine Ganzzahl erhalten möchte, um sie mit anderen Variablen zu vergleichen, aber wenn ich über parseInt schwebe, erhalte ich Folgendes
“Die Methode parseInt(String) im Typ Integer ist für die Argumente (int) nicht anwendbar”
List<WebElement> list_of_last_30_days = driver.findElements(By.xpath(loc.getProperty("last30days")));
last_30_days = list_of_last_30_days.get(i).getText();// Iterate and fetch product price
String[] first=last_30_days.split("\\(");
System.out.println(Arrays.toString(first));
for(int o=0;o<first.length;o++) {
String[] then=first[o].split("%");
String toGet=then[0];
int_last_30_days_product_price = Integer.parseInt(toGet);// Convert to Integer
}
Die Zeichenfolgenausgabe ‘String toGet’ sieht folgendermaßen aus: Bsp.: +11, -24 und so weiter. Ich verstehe nicht, warum ich daraus keine Ganzzahl machen kann.
Können Sie mir helfen, wie ich meinen Code ändern soll?
Lösung
Sie können eine Zeichenfolge ganzzahliger numerischer Werte, denen entweder +
oder vorangestellt ist, -
in einen gültigen ganzzahligen Typ (int) parsen. Davon sollte es keine Ausnahme geben. Jedes andere Alphazeichen generiert jedoch eine NumberFormatException .
“aber wenn ich über den parseInt sauge”:
Ich bin mir nicht ganz sicher, was Sie damit meinen, aber wenn Ihre IDE einen Fehler oder eine Warnung anzeigt, bevor der Code ausgeführt wird, sollten Sie sich meiner Meinung nach genauer ansehen, um welchen Datentyp es sich int_last_30_days_product_price
wirklich handelt. Der folgende Code validiert die Zeichenfolge, die in eine Ganzzahl geparst werden soll.
// Ensure no leading/trailing space(s).
String toGet = then[0].trim();
/* Validate the fact that whatever is contained within toGet
(if anything) is actually a string representation of a
signed, unsigned, or "+" prefixed integer value. if it is
parse the string to integer (int). */
if (toGet.matches("(-?|\\+?)\\d+")) {
int_last_30_days_product_price = Integer.parseInt(toGet);// Convert to Integer
}
// Otherwise....
else {
/* Do something else pertinent to the issue that
`toGet` is either empty (null String) or that
it contains alpha characters. */
}
Beantwortet von – DevilsHnd
Antwort geprüft von – Willingham (FixError Volunteer)