Hallo Peter,
ich fange ganz vorne an.
Wenn du die Möglichkeit hast, mach dich zuerst mit den Java-Konventionen vertraut. Wenn du dich z.B. daran hältst Variablen immer klein zu beginnen (in statt In) wirst dir das Leben sehr viel einfacher machen (nicht falsch verstehen bitte, ist nur ein Tipp).
Wenn ich mir das so ansehe, versuche ich mal Scanner.next() und Scanner.nextLine() zu erklären.
Zunächst weist du der Variable s1 das erste Wort des eingegebenen Satzes (in.next() gibt also deine Eingabe bis zum ersten Leerzeichen zurück UND SPRINGT dann an diese Stelle!) zu.
Direkt danach überschreibst du den Inhalt von s1 mit dem Rest deiner Eingabe bis zum Zeilenumbruch (in.nextLine()).
Ich vermute mal, du hast nur ein Wort eingegeben und Eingabe gedrückt. Das bedeutet, du weist s1 dieses eine Wort zu und überschreibst es mit dem Rest der Zeile - also nichts.
Der Fehler ist ein anderes Thema. nextInt() und nextDouble() erwarten Zahlen, die sie verarbeiten können. Gibst du aber keine Zahl ein, stürzen diese Funktionen mit der o.g. Maldung ab. InputMismatch heißt hier soviel: habe Zahl „double“ erwartet, war aber ein Buchstabe!? Da das nicht geht stürzt er ab.
Ich empfehle dir folgendes, um zu verstehen was passiert:
s1 = In.next ( );
System.out.println("A:"+s1);
s1 = In.nextLine ();
System.out.println("B:"+s1);
i1 = In.nextInt ( );
System.out.println("C:"+i1);
d1 = In.nextDouble ();
System.out.println("D:"+d1);
Und dann die Eingaben ohne Anführungszeichen :
„abcd efgh ijkl“„abc“
und beim zweiten Versuch:
„abcd efgh ijkl“"123"„456“
Viele Grüße
Stefan
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]