2014-10-29 73 views
0

我試圖讓從三個詞是由用戶輸入的首字母縮寫:StringIndexOutOfBoundExceptions錯誤顯示

import java.util.Scanner; 
public class Acronym 
{ 
    public static void main(String[] args) 
    {  

     Scanner input = new Scanner(System.in); 
     String phrase; 
     System.out.println("Please, enter the three words here>> "); 
     phrase = input.nextLine();  
     char first, second, third; 
     int stringLength; 
     int x = 0; 
     char c; 
     stringLength = phrase.length(); 
     first = phrase.charAt(0); 
     second = phrase.charAt(x + 1); 
     third = phrase.charAt(x + 1); 

      for(x = 0; x < stringLength; x++); 
      { 
      int a = 1; 
      c = phrase.charAt(x); 

      if(Character.isWhitespace(c)); 
       if(a <= 1) 
       second = phrase.charAt(x+1); 

      else if(a <= 2) 
       third = phrase.charAt(x++); 
      } 

     System.out.println("The acronym is " + first + second + third); 
    } 

} 

但是,每當我試着輸入StringIndexOutOfBoundExceptions錯誤顯示。例如,我曾經嘗試輸入這三個詞「一二三」,這是結果:

請輸入詞/詞組:在線程「主要」的java.lang 一二三

例外。的StringIndexOutOfBoundsException:字符串索引超出範圍:13 在java.lang.String.charAt(String.java:646) 在Acronym.main(Acronym.java:23)

+0

我已經解決了IndexOutOfBoundExceptions錯誤,謝謝! 然而,結果是OTn這不是我想要的輸出。由於我輸入「一二三」,我希望結果是「OTT」。我該怎麼辦? – Chrissy 2014-10-29 20:56:20

+0

你的新問題是你只有一次賦值'third',並且在循環之前的那一行。您已在初始「O」後將其分配給角色。我不確定你對變量'a'的想法是什麼,但是你把它分配給'1',你永遠不會改變它。這意味着你的'else if'條件從不被檢查。我建議你離開計算機幾分鐘,並在紙上畫出你想要你的程序做什麼。 – 2014-10-29 22:46:21

回答

2

卸下分號

for (x = 0; x < stringLength; x++); 
           ^

正在終止for循環。同爲分號終止if聲明

if (Character.isWhitespace(c)); 
          ^

,並請環路後去除分號使用大括號包圍控制塊

+0

謝謝!那工作 – Chrissy 2014-10-29 20:47:04

+0

然而,結果是OTn這不是我想要的輸出。由於我輸入「一二三」,我希望結果是「OTT」。我該怎麼辦? – Chrissy 2014-10-29 20:49:12

+0

您可以根據空格拆分輸入行,然後輕鬆輸出每個結果字符串的第一個字母 – Reimeus 2014-10-29 21:00:23