Java beginner having problems using Integer.parseInt to convert string to integer

I am creating a batch program that reads an external input file containing

and then sums the numbers (from right to left), starting with

last digit and skipping every other digit. I should treat the input as a string, not

Numerical. My code looks like this:

int oddSum = 0, digit = 0; for(int odd = (cardNumber.length() - 1); odd >= 0; odd = odd - 2) { digit = Integer.parseInt(cardNumber); oddSum += digit; } 

But String cardNumber is a whole string, and I need only one digit. Say:

  cardNumber = "4388576018402626"; 

How can I get, say, "6" turned into an integer?

+4
source share
5 answers

You don't even need to parse anything if you only need to process one digit at a time:

 String cardNumber = "4388576018402626"; int d = cardNumber.charAt(0) - '0'; // = 4 

But if you insist on using Integer.parseInt() , use the String method. substring (begin, end) :

 int d = Integer.parseInt(cardNumber.substring(0, 1)); // = 4 

** UPDATE **

Or perhaps this is an even better solution:

 char[] chars = cardNumber.toCharArray(); int oddSum = 0, digit = 0, len = chars.length - 1; for(int odd = len; odd >= 0; odd -= 2) { if (Character.isDigit(chars[odd])) { digit = Character.getNumericValue(chars[odd]); oddSum += digit; } //else { // do something... throw an exception, whatever here //} } 
+3
source

How can I get, say, "6" turned into an integer?

 Integer.parseInt("6"); 

But String cardNumber is a whole string, and I just need one digit.

So just enter one digit:

 String cardNumber = "4388576018402626"; String digit = cardNumber.substring(i, i + 1); 
+2
source

You should iterate over the string as if it were an array of individual characters; use cardNumber.toCharArray() .

 int oddSum = 0, digit = 0; char[] cardNumberDigits = cardNumber.toCharArray(); for(int odd = cardNumberDigits.length - 1; odd >= 0; odd = odd - 2) { digit = Integer.parseInt(String.valueOf(cardNumberDigits[odd])); oddSum += digit; } 
+1
source

The charAt () accessor allows you to get one character in the index.

0
source

You need to take the substring cardNumber

 String cardNumber = "4388576018402626"; int start = cardNumber.length()-2; int end = cardNumber.length()-1; String subString = cardNumber.substring(start, end); int numberSix = Integer.parseInt(subString); 
0
source

Source: https://habr.com/ru/post/1342385/


All Articles