2014-03-04 39 views
0

好的,所以我正在做这个项目,要求我有一个字符串的第一个和最后一个setters出现与他们之间计算的数字和输出。我试过重新调整一些反向字符串代码,但我无法让输出显示在我的IDE中。计数字母之间的第一个和最后 - Java

任何人都可以看看我的代码,并提出一些建议?

public static void main(String[] args) { 
    String countWord; 
    countWord = JOptionPane.showInputDialog(null, 
      "Enter the string you wish to have formatted:"); 
} 

static String countMe(String countWord) { 
    int count = 1; 
    char first = countWord.charAt (0); 
    char last = countWord.charAt(-1); 
    StringBuilder word = new StringBuilder(); 
    for(int i = countWord.length() - 1; i >= 0; --i) 
     if (countWord.charAt(i) != first) { 
      if (countWord.charAt(i) != last) { 
       count++; 
      } 
     } 
     return countWord + first + count + last; 
    } 
} 
+0

什么是“字符串二传手”? – Rainbolt

+0

我想你想char last = countWord.charAt(countWord.length - 1);,为什么不只是使用countWord.length - 2来得到中间的字符数? –

+4

我不明白你想要做什么,也不知道你有什么问题。你能否澄清两个? – Keppil

回答

2

使用charAt()只要建立它:

return "" + str.charAt(0) + (str.length() - 2) + str.charAt(str.length() - 1); 

""在前面引起下面要连接作为字符串(而不是算术加)的数值。


略微更简洁的选择是:

return countWord.replaceAll("(.).*(.)", "$1" + (str.length() - 2) + "$2") 
+0

我会在哪里实施? –

+0

删除该方法的所有代码,并用此单行替换它。您当然需要调用它并显示返回的字符串。 – Bohemian

0

你可以将String.length()方法来获得字符串的总长度。您的代码会是这样的:

int totalLength = countWord.length(); 
int betweenLength = totalLength - 2; // This gives the count of characters between first and last letters 
char first = countWord.charAt(0); 
char last = countWord.charAt(str.length() - 1); 
String answer = first + betweenLength + last; 
0
import javax.swing.JOptionPane; 

public class Main{ 

    public static void main(String[] args) { 
     String countWord; 
     countWord = JOptionPane.showInputDialog(null, 
       "Enter the word you wish to have formatted:"); 
     JOptionPane.showMessageDialog(null, countMe(countWord)); 
    } 

    static String countMe(String countWord) { 
     int count = 0; 
     String first = String.valueOf(countWord.charAt(0)); 
     String last = String.valueOf(countWord.charAt(countWord.length() - 1)); 
     for(int i = 1; i < countWord.length() - 1; i++) { 
      if (String.valueOf(countWord.charAt(i)) != first) { 
       count++; 
      } 
     } 
     return first + count + last; 
    } 
} 
1

一旦你确定了第一和最后一个字符,它不需要不必要的条件。刚刚尝试这一点:

static String countMe(String countWord) { 

char first = countWord.charAt(0); 
char last = countWord.charAt(countWord.length()-1); 

int count=0; 

for (int i = 1; i < countWord.length()-1; i++) 
    { 
     count++; 
    } 
    return first + String.valueOf(count) + last; 
    } 

或者,如果不强制使用for循环,你可以把它简单,因为这

static String countMe(String countWord) { 
char first = countWord.charAt(0); 
char last = countWord.charAt(countWord.length()-1); 

int count = countWord.substring(1, countWord.length()-1).length(); 

return first + String.valueOf(count) + last; 
} 
相关问题