2016-01-19 80 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(); 
    } 

例如N-长度:N = 10 S = aabbbabbab字符串在Java

如何取n长度的字符串的输入? 我想要一个输入字符串,其中必须是长度为N. 我知道上面的逻辑是错误的,但我仍然感到困惑? PS:第一行输入包含单个整数N - 字符串的长度。 第二行包含初始字符串S本身。

+0

我不确定你想问什么。你的意思是你保证字符串get是长度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 
    } 
}