2015-11-04 60 views
-4

我正在製作一個簡單的程序,它會在單詞ex中間加上一個帶「*」的單詞:「Some * ing」,並且會用另一個字符串來替換它第一個詞中的「*」。像「th」 - >輸出「Something」。Java錯誤:java.lang.ArrayIndexOutOfBoundsException:1

樣品試驗1:

輸入第一個字符串:

d * G

輸入替換字符串:

夠簡單。我在IDEA(運行Java 8)中創建了這個程序,它工作正常(儘管我仍然需要添加一些小東西)。 但在CodeRunner中,我遇到了一些問題。它說「java.lang.ArrayIndexOutOfBoundsException:1」。我的代碼有一些錯誤,我不知道它在哪裏。 我的代碼:

import java.util.Scanner; 
import java.lang.Math; 
import java.io.*; 

public class Main { 

     public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 

     System.out.println("Enter the first String:"); 
     //The inital String 
     String first = scan.nextLine(); 

     System.out.println("Enter the replacement String:"); 
     // SubString 
     String subs = scan.nextLine(); 

     if (!(first.contains("!") || first.contains("@") || first.contains("#") || first.contains("$") || first.contains("%") || first.contains("^") || first.contains("&") || first.contains("(") || first.contains(")") || first.contains("+") || first.contains("-") || first.contains("_") || first.contains("~") || first.contains("`") || first.contains("\\") || first.contains("[") || first.contains("]") || first.contains("{") || first.contains("}") || first.contains(":") || first.contains(";") || first.contains("'") || first.contains("\"") || first.contains("/") || first.contains("?") || first.contains(".") || first.contains(">") || first.contains(",") || first.contains("<"))) { 

      if (first.contains("*")) { 
       String parts[] = first.split("\\*"); 

       String part1 = parts[0]; 
       String part2 = parts[1]; 
       String newString = part1 + subs + part2; 
       System.out.println(newString); 
      } else { 
       System.out.println("Error: no *"); 
      } 

     } else { 
      System.out.println("Error: Incorrect characters"); 
     } 
    } 
} 

的CodeRunner給我,

Runtime Error 
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 
    at Main.main(Main.java:298) 
    at Ideone.assertRegex(Main.java:125) 
    at Ideone.test(Main.java:61) 
    at Ideone.main(Main.java:28) 

雖然代碼工作在我的IDE,我們假定它是能夠使這樣的代碼將在codeRunner

工作謝謝

+1

閱讀例外。根據它告訴你的內容進行調試。在Main.java的第298行,當它不存在時,你正在訪問'something [1]'。 – John3136

+0

看起來像'String parts [] = first.split(「\\ *」);'沒有達到您期望的效果。它會分割字符'\'和'*'。沒有正則表達式的行動在那裏。查看File類,看它是否提供了一些有用的方法(提示:它的確如此)。此外,屏幕您的代碼不適當的語言。 –

+0

瀏覽你的循環並學習它們在運行時如何工作 –

回答

0

注意:StringBuilder僅用於演示

if (YOURSTRING.contains("*")) { 
    StringBuilder builder=new StringBuilder(); 
    String parts[] = YOURSTRING.split("\\*"); 
    for (int i = 0; i < parts.length; i++) { 
     builder.append(parts[i]); 
    } 
     System.out.println(builder.toString()); 
} else { 
    System.out.println("Error: no *"); 
} 

for循環,而不是從陣列 獲得價值靜態使用,因爲如果吐會做1次的非那麼這行 String part1 = parts[0]; String part2 = parts[1];回報ArrayIndexOutOfBoundsException異常,因爲沒有第二個元素int數組得到它,明白了嗎?

+0

getText()方法...它不起作用。我很新的Java,所以我可能會問一些萊默的問題,但噢好 – user3687547

+0

男人它只是演示,我是不是在Android –

+0

唐我認爲你沒有注意到邏輯,而不是代碼 –

0

謝謝大家誰幫助我!我在解決這個任務的過程中學到了10種新的方法,直到找到解決方案。這是一個有益的經驗。這個任務完成了,我得到了一個(100%)!感謝你們!

import java.util.Scanner; 

public class AsmntFive { 
    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 

     System.out.println("Enter the first String:"); 

     String first = scan.nextLine(); 

     System.out.println("Enter the replacement String:"); 

     String subs = scan.nextLine(); 

     if (!(first.contains("!") || first.contains("@") || first.contains("#") || first.contains("$") || first.contains("%") || first.contains("^") || first.contains("&") || first.contains("(") || first.contains(")") || first.contains("+") || first.contains("-") || first.contains("_") || first.contains("~") || first.contains("`") || first.contains("\\") || first.contains("[") || first.contains("]") || first.contains("{") || first.contains("}") || first.contains(":") || first.contains(";") || first.contains("'") || first.contains("\"") || first.contains("/") || first.contains("?") || first.contains(".") || first.contains(">") || first.contains(",") || first.contains("<"))) { 

      if (first.contains("*")) { 
       System.out.println(first.replace("*", subs)); 
      } else { 
       System.out.println("Error: no *"); 
      } 

     } else { 
      System.out.println("Error: Incorrect characters"); 

     } 
    } 
} 
相關問題