2016-01-19 114 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 
    } 
}