2013-08-17 45 views
0
public int cut(int b){ 
    String str1; 
    b = 0; 
    Scanner str = new Scanner(System.in); 
    System.out.println("Write your string: "); 
    str1 = str.next(); 
    Scanner in = new Scanner (System.in); 
    System.out.println("Write a number: "); 
    int num1 = in.nextInt(); 
    System.out.println("Write another number: "); 
    int num2 = in.nextInt(); 
    System.out.println(str1.substring(num1, num2)); 
    return b; 
} 

這是我的代碼。我想要一個用戶編寫一個字符串,然後從哪裏寫到他想要剪切剛剛輸入的字符串的位置。我無法得到的部分是獲取該子字符串。如何在給定參數的情況下剪切字符串

+1

並且哪個是您正面臨的問題(爲什麼這不按預期工作)? – SJuan76

+0

在最後一部分,當我嘗試打印不會出現的子字符串 –

+1

您是否收到異常?將你的'return b'放在括號內,然後重試。 –

回答

1

如果您的字符串中有空格。改爲使用Scanner#nextLine()

對於輸入「我的輸入字符串」

str1 = str.next(); // returns "my" only 

因爲空間是掃描儀的默認分隔符。要讀取整條生產線採用

str1 = str.nextLine(); // returns "my input string" 

其次,你不使用Scanner str在所有閱讀的數字。它應該是

int num1 = str.nextInt(); // instead of in.nextInt() 

您還應該檢查數字範圍內,或者我認爲更好的抓IndexOutOfBoundsException本身。會照顧負面和不負責任。

try { 
    System.out.println(str1.substring(num1, num2)); 
} catch (IndexOutOfBoundsException e) { 
    System.out.println("Range specified is out of bounds for '" + str1 + "'"); 
} 
+0

不妨增加一個檢查,即num1和num2的組合大小不超過長度! –

+0

我的代碼被驗證,它只是它的西班牙語,所以我沒有寫下所有,但System.out.println不會顯示子字符 –

+0

你沒有使用掃描儀來讀取數字。它應該是'str.nextInt()'。 –

相關問題