2016-01-19 4 views
0
public static void main(String[] args) { 
    Scanner sc=new Scanner(System.in); 
    int N=sc.nextInt(); 
    String s=""; 
    for(int i=0;i<N;i++){ 
     s=sc.nextLine(); 
    } 

Eg: N = 10 S = aabbbabbabСтрока русской длины в Java

Как принимать ввод строки русской длины? Я пытаюсь взять строку ввода, которая должна иметь длину N. Я знаю, что вышеуказанная логика ошибочна, но все же я смущен? PS: Первая строка ввода содержит одно целое число N - длину строки. Вторая строка содержит исходную строку S.

+0

Я не уверен, что вы пытаетесь спросить. Вы имеете в виду, что вы гарантируете, что строка будет равна длине n? –

+0

Отредактированный вопрос. Да, строка, которая должна быть введена, должна быть n длины. – TrueDroider

ответ

4

Проверьте, если входной строки больше, чем maximumlength.

if (s.length() > maximumLength) { // do something 

И что вы можете сделать, это использовать подстроку, чтобы обрезать входной сигнал.

fixedInput = s.substring(0, maximumLength - 1); 

Хорошо, как вы сначала читаете номер, вы должны инициализировать maximumLength с первым входом.

В качестве альтернативы вы можете попросить пользователя, пока вход не соответствует введенному длина:

do { 
    s = sc.nextLine(); 
    if (s.length() != maximumLength) 
     System.out.println("The input did not fit the size"); 
} while (s.length() != maximumLength); 
+0

Я считаю, что первый вариант более эффективен, но второй ответ хорош, если пользователю нужно захватить только первые n символов, а затем оставить после него источник ввода. –

1

Используйте это:

Scanner sc = new Scanner(System.in); 
int N = sc.nextInt(); // N == 5 e.g 
sc.nextLine(); // Consume the leftover '\n' 

String s = sc.nextLine(); // Hello World 
s = s.substring(0, N); 
System.out.println(s); // Hello 
1

Я хотел бы предложить, чтобы проверить строку ввода с помощью if и снова возвращают пользователю ввести, если это не соответствуют длине, которую вы ищете.

Пример:

if(s.length() != n) { 
    //Take another input 
} 

Вы можете сделать выше, в цикле, пока это условие не будет выполнено (может быть, while цикл).

public static void main(String[] args) { 
    Scanner sc=new Scanner(System.in); 
    int n=sc.nextInt(); 
    String s=""; 
    do{ 
     s = sc.nextLine(); 
    }while(s.length() != n); 
} 
1

В приведенном выше коде, все, что вы делаете, это чтение в n строк и настройка s до последнего (там будет также исключение брошено, если нет n строки во входном потоке). То, что вам нужно сделать, читается в строке и компенсирует любые ошибки длины.

if(in.hasNextLine()) { 
    s = in.nextLine(); 
    if(s.length() > n) s = s.substring(0, n); // Cut the string so it is of the desired length 
    else { 
     for(int i = 0; i < n - s.length(); i++) s += " "; // Add spaces until the string is of the desired length 
    } 
} 
Смежные вопросы