Як знайти ціле значення певних символів в масиві Java string?

Я використовую наступний код, щоб прийняти значення рядка, як-от 9s або 4c, що знаходиться в масиві рядків і знайти тільки ціле значення першого символу. Я також хотів би використати це для рядкових значень з кількома числами, такими як 10s або 13c.

total = total + Integer.parseInt(a[i].substring(0)) + 1;

Це дає мені виняток із форматом цифр. Будь-які ідеї про те, що я можу робити неправильно?

0
@ user2519990, будь-ласка, прийміть один з цих відповідей як правильну відповідь, якщо один з них вам корисний
додано Автор Ruchira Gayan Ranaweera, джерело
@ user2519990, будь-ласка, прийміть один з цих відповідей як правильну відповідь, якщо один з них вам корисний
додано Автор Ruchira Gayan Ranaweera, джерело
@ user2519990, будь-ласка, прийміть один з цих відповідей як правильну відповідь, якщо один з них вам корисний
додано Автор Ruchira Gayan Ranaweera, джерело
a [i]. substring (0) поверне всі String, якщо ви просто хочете номер, a [i]. substring (0, a [i] .length-1)
додано Автор TroyAndAbed, джерело
a [i]. substring (0) поверне всі String, якщо ви просто хочете номер, a [i]. substring (0, a [i] .length-1)
додано Автор TroyAndAbed, джерело
a [i]. substring (0) поверне всі String, якщо ви просто хочете номер, a [i]. substring (0, a [i] .length-1)
додано Автор TroyAndAbed, джерело

10 Відповіді

Це буде працювати

public static void getIntVal()  {
    String text = "123cc";
    String numOnly = text.replaceAll("\\D+", "");
    int numVal = Integer.valueOf(numOnly);
    System.out.println(numVal);
}

Якщо хтось хоче використовувати як подвійне, ви можете зробити це наступним чином

    String text = "123.0114cc";
    String numOnly = text.replaceAll("\\p{Alpha}","");
    double numVal = Double.valueOf(numOnly);
    System.out.println(numVal);
5
додано
звісно, ​​чому б ні. Я дам тобі +1
додано Автор Ruchira Gayan Ranaweera, джерело
@shreyanshjogi якщо ви маєте справу з подвійним ви можете використовувати цей код String text = "123.0cc"; String numOnly = text.replaceAll ("\\ D +.", ""); подвійний numVal = Double.valueOf (numOnly); System.out.println (numVal);
додано Автор Ruchira Gayan Ranaweera, джерело
@zEro Дякую, що вказали на мене. Перевірте мою відредаговану відповідь. Це дозволить вирішити вашу проблему.
додано Автор Ruchira Gayan Ranaweera, джерело
якщо це десяткове значення, ваша логіка не виконана
додано Автор shreyansh jogi, джерело
@ Рухіра Це просто неправильно. Що робити, якщо ваш вхід був "123.0743cc" ?!
додано Автор zEro, джерело
@Ручіра +1 для негайного виправлення. Але, можливо, я заслуговую на +1. : П.
додано Автор zEro, джерело

Це буде працювати

public static void getIntVal()  {
    String text = "123cc";
    String numOnly = text.replaceAll("\\D+", "");
    int numVal = Integer.valueOf(numOnly);
    System.out.println(numVal);
}

Якщо хтось хоче використовувати як подвійне, ви можете зробити це наступним чином

    String text = "123.0114cc";
    String numOnly = text.replaceAll("\\p{Alpha}","");
    double numVal = Double.valueOf(numOnly);
    System.out.println(numVal);
5
додано
звісно, ​​чому б ні. Я дам тобі +1
додано Автор Ruchira Gayan Ranaweera, джерело
@zEro Дякую, що вказали на мене. Перевірте мою відредаговану відповідь. Це дозволить вирішити вашу проблему.
додано Автор Ruchira Gayan Ranaweera, джерело
@shreyanshjogi якщо ви маєте справу з подвійним ви можете використовувати цей код String text = "123.0cc"; String numOnly = text.replaceAll ("\\ D +.", ""); подвійний numVal = Double.valueOf (numOnly); System.out.println (numVal);
додано Автор Ruchira Gayan Ranaweera, джерело
якщо це десяткове значення, ваша логіка не виконана
додано Автор shreyansh jogi, джерело
@ Рухіра Це просто неправильно. Що робити, якщо ваш вхід був "123.0743cc" ?!
додано Автор zEro, джерело
@Ручіра +1 для негайного виправлення. Але, можливо, я заслуговую на +1. : П.
додано Автор zEro, джерело

Це буде працювати

public static void getIntVal()  {
    String text = "123cc";
    String numOnly = text.replaceAll("\\D+", "");
    int numVal = Integer.valueOf(numOnly);
    System.out.println(numVal);
}

Якщо хтось хоче використовувати як подвійне, ви можете зробити це наступним чином

    String text = "123.0114cc";
    String numOnly = text.replaceAll("\\p{Alpha}","");
    double numVal = Double.valueOf(numOnly);
    System.out.println(numVal);
5
додано
звісно, ​​чому б ні. Я дам тобі +1
додано Автор Ruchira Gayan Ranaweera, джерело
@zEro Дякую, що вказали на мене. Перевірте мою відредаговану відповідь. Це дозволить вирішити вашу проблему.
додано Автор Ruchira Gayan Ranaweera, джерело
@shreyanshjogi якщо ви маєте справу з подвійним ви можете використовувати цей код String text = "123.0cc"; String numOnly = text.replaceAll ("\\ D +.", ""); подвійний numVal = Double.valueOf (numOnly); System.out.println (numVal);
додано Автор Ruchira Gayan Ranaweera, джерело
якщо це десяткове значення, ваша логіка не виконана
додано Автор shreyansh jogi, джерело
@ Рухіра Це просто неправильно. Що робити, якщо ваш вхід був "123.0743cc" ?!
додано Автор zEro, джерело
@Ручіра +1 для негайного виправлення. Але, можливо, я заслуговую на +1. : П.
додано Автор zEro, джерело

str.substring(0) is just str again (read the docs). You are probably looking for

a[i].substring(0, a[i].length() - 1) //cuts off last character
4
додано

str.substring(0) is just str again (read the docs). You are probably looking for

a[i].substring(0, a[i].length() - 1) //cuts off last character
4
додано

str.substring(0) is just str again (read the docs). You are probably looking for

a[i].substring(0, a[i].length() - 1) //cuts off last character
4
додано

Розчин Рухіри вимагає видалення нерозрядних символів; який у вашій установці здається правильним. Однак, її рішення недійсне, якщо ці числа є поплавками або подвійними, як питання shreyansh jogi .

Правильно впровадивши мисленнєве рішення Рухіри, це допоможе вирішити вашу проблему ...

String text = "123.0121cc";
String numOnly = text.replaceAll("\\p{Alpha}", "");

Якщо ви знаєте, чого чекати, скажіть double :     подвійний numVal = Double.valueOf (numOnly);     System.out.println (numVal);

Інакше .. якщо ви не знаєте, чи інший текст є integer або double , це допоможе вам:

if(numOnly.contains(".")) {
    double numVal = Double.valueOf(numOnly);
    System.out.println(numVal);
} else {
    int numVal = Integer.valueOf(numOnly);
    System.out.println(numVal);
}
1
додано
total = total + Integer.parseInt(a[i].substring(0,a[i].length()-1));
0
додано
total = total + Integer.parseInt(a[i].substring(0,a[i].length()-1));
0
додано
total = total + Integer.parseInt(a[i].substring(0,a[i].length()-1));
0
додано
ІТ КПІ - Java
ІТ КПІ - Java
436 учасників