Fehler beim Ausführen dieses Codes. Fehler sind Ausnahme im Thread "Haupt" java.lang.StringIndexOutOfBoundsException: String-Index außerhalb des Bereichs: -16. Nicht sicher, wie zu beheben, habe ich bereits mehrere Lösungen ausprobiert.Stringindex außerhalb des zulässigen Bereichs Lösung? (java)
import java.util.Scanner;
public class Card {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("Enter your card: ");
String number = input.next();
if(addingDigit(number) % 10 == 0)
System.out.println("Card is valid");
else
System.out.println("Card is invalid");
}
public static long addingDigit(String number){
long even = 0;
for(int i = 0, s = 2; i < number.length() - 1; i++, s *= 2){
if(number.charAt(number.length() - s) >= '5'){
if(number.charAt(number.length() - s) == '5')
even += 1;
else if (number.charAt(number.length() - s) == '6')
even += 3;
else if(number.charAt(number.length() - s) == '7')
even += 5;
else if(number.charAt(number.length() - s) == '8')
even += 7;
else if(number.charAt(number.length() - s) == '9')
even += 9;
}
else
even += (number.charAt(number.length() - s) - 48);
}
long k = addOdd(number);
long sumOfDigits = even + k;
return sumOfDigits;
}
public static long addOdd(String number){
long odd = 0;
for (int i = 0, s = 1; i < number.length() - 1; i++, s += 2){
odd += number.charAt(number.length() - s) - 48;
}
return odd;
}
}
Denken Sie darüber nach, wie 'charAt (...)' im Angesicht des '' 'ansteigen wird. – KevinO
Was versuchst du mit s zu tun? Wie auch immer, ziehen Sie nicht mehr als die Länge der Zeichenfolge von der Länge der Zeichenfolge ab, wenn Sie charAt() –
mit s verwenden, um die geraden Indizes in der Zeichenfolge zu erhalten. – shadowg