Ich habe ein Programm geschrieben, wo der User eine Zahl eingibt und bestimmt Dinge geprüft werden (z.B. ob die zahl eine Primzahl ist). Bei einer Stelle musste ich Longs in Strings umwandeln. Nur wenn ich nun eine Zahl eingebe, die über den maximalwert von int geht, spuckt das Programm eine Fehlermeldung aus und schließt sich.
Hier der Code:
Fehlermeldung:
Hier der Code:
Java:
import java.io.File;
import java.util.Scanner;
public class Funktionen_einfach {
public static long anzahlTeiler(long n) {
long teiler=0;
for (long i=1; i<=n; i++) {
if (n%i==0) {
teiler++;
} // end of if
} // end of for
return teiler;
}
public static String Teiler(long q) {
StringBuilder x = new StringBuilder();
String b = "";
for (long i=1;i<=q;i++ ) {
if (q%i==0) {
x.append(i+(","));
}
} // end of for
if (x.length() > 0) {
x.setLength(x.length() - 1);
} // end of if
b = "Teiler sind: " + x;
return b;
}
public static boolean istPrim(long z) {
if (anzahlTeiler(z)==2) {
return true;
} else {
return false;
} // end of if-else
}
public static String naechstePrim(long x) {
long m = x+1;
long l = x-1;
String p;
while (!istPrim(m) && !istPrim(l)) {
m++;
l--;
} // end of while) {
if (istPrim(m) && istPrim(l)) {
String s = Long.toString(l) + ( "," ) + Long.toString(m);
return s;
} else {
if (istPrim(m)) {
return Long.toString(m);
} // end of if
else {
return Long.toString(l);
} // end of if-else
}
}
public static void main(String[] args) {
int k = 1;
while (k==1) {
System.out.println("Zahl eingeben: ");
Scanner sc = new Scanner(System.in);
long d = sc.nextInt();
String f = "";
if (istPrim(d)) {
System.out.println("Die Zahl "+d+" ist eine Primzahl.");
} else {
System.out.println("Die Zahl "+d+" ist keine Primzahl.");
} // end of if-else
System.out.println("Nächste Primzahl(en) ist/sind "+naechstePrim(d));
if (!istPrim(d)) {
System.out.println(Teiler(d));
}
System.out.println("Wollen Sie das Programm beenden?(ja/nein)");
f = sc.next();
if (f.equals("ja")) {
k++;
} // end of if
} // end of while
} // end of main
} // end of class Funktionen
Code:
Exception in thread "main" java.util.InputMismatchException: For input string: "3000000000"
at java.base/java.util.Scanner.nextInt(Scanner.java:2167)
at java.base/java.util.Scanner.nextInt(Scanner.java:2115)
at Funktionen_einfach.main(Funktionen_einfach.java:66)