Ваш вопрос в основном сводится к выяснению, сколько символов в строке соответствует заданному условию, а сколько - нет.
Есть два способа сделать это:
1) Просто посчитайте символы:
int numPositiveChars = 0;
int numNegativeChars = 0;
for (int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if (/*check c here*/)
numPositiveChars++;
else
numNegativeChars++;
}
На самом деле вам даже не нужно считать отрицательные символы, потому что это значение просто s.length() - numPositiveChars
.
2) Другой подход заключается в использовании регулярных выражений, например, удалив все нечисловые символы и затем подсчитав количество символов:
int numPositiveChars = s.replaceAll("[^0-9]+", "").length();
Эта строка удалит все символы из строки, которые не являются числовыми (не 0-9), а затем вернет длину результата (количество символов, которые являются числовыми).
Если у вас есть количество символов, соответствующих вашему состоянию, вычисление процента становится тривиальным.