2016-01-21 3 views
0

Моя программа по большей части работает плавно. Только некорректная часть - последний вход для переменной newsub не работает. Скорее, программа проскакивает через нее и движется дальше. Я попытался прокомментировать последнюю часть, но потом мне все еще не разрешалось вводить что-либо. Итак, видимо, затмение пропускает линии? Я видел пару сообщений, но когда я сменил первую часть с клавиатуры на вход, была вызвана ошибка, потому что они рассматривали ее как новую невостребованную переменную. Любая помощь будет отличной! (Также я полностью понимаю, что моя программа больше, чем необходимо) Спасибо!java сканер пропускает последний вход

import java.util.Scanner; 

public class ScannerTest1 { 

    public static void main(String[] args) { 
     Scanner keyboard = new Scanner(System.in); 

     System.out.print("Enter a long string: "); 
     String lin = keyboard.nextLine(); 

     System.out.print("Enter a substring: "); 
     String sub = keyboard.nextLine(); 

     int leng = lin.length(); 
     System.out.println("Length of your string: " + leng); 

     int leng2 = sub.length(); 
     System.out.println("Length of your substring: " + leng2); 

     int mid = lin.indexOf(sub); 

     System.out.println("Starting position of your substring in string: " + lin.indexOf(sub)); 

     System.out.println(lin.substring(0, mid)); 
     System.out.println(lin.substring((mid + leng2 + 1), leng)); 

     System.out.print("Enter a position between 1 and 43: "); 
     int pos = keyboard.nextInt(); 

     System.out.println("The character at position " + pos + " is " + lin.charAt(pos)); 

     System.out.print("Enter a replacement string: "); 
     String newsub = keyboard.nextLine(); 

     System.out.println("Your new string is: " + lin.substring(0, mid) + newsub + lin.substring((mid + leng2 +1), leng)); 

     keyboard.close(); 
    } 

} 

ответ

0

ли это:

System.out.print("Enter a position between 1 and 43: "); 
int pos = keyboard.nextInt(); 
keyboard.nextLine(); 

Вы должны съедать символ новой строки, которая остается более. Если вы не сделаете свой последний keyboard.nextLine(), он не будет и никогда не позволит вводить пользователя.

Это побочный эффект nextInt()nextDouble() и т. Д. ... они не питаются новым символом линии.

Смежные вопросы