格式化String输入时遇到问题

时间:2015-03-02 14:51:09

标签: java string joptionpane filewriter printwriter

我试图将用户输入的输入转到小写,然后将输入中的第一个字符放到大写字母中。例如,如果我输入aRseNAL作为我的第一个输入,我想格式化输入,以便它将放置" Arsenal"在data.txt文件中,我还想知道是否有一种方法可以将每个第一个字符设置为大写,如果有一个以上的单词,即。 mAN uNiTeD格式化为Man United以写入文件。

我在下面的代码是我尝试过的,我无法让它工作。任何建议或帮助将不胜感激。

import java.io.*;
import javax.swing.*;
public class write
{
    public static void main(String[] args) throws IOException
    {
        FileWriter aFileWriter = new FileWriter("data.txt");
        PrintWriter out = new PrintWriter(aFileWriter);
        String team = "";
        for(int i = 1; i <= 5; i++)
        {
            boolean isTeam = true;
            while(isTeam)
            {
                team = JOptionPane.showInputDialog(null, "Enter a team: ");
                if(team == null || team.equals(""))
                    JOptionPane.showMessageDialog(null, "Please enter a team.");
                else
                    isTeam = false;
            }
            team.toLowerCase();                 //Put everything to lower-case.
            team.substring(0,1).toUpperCase();  //Put the first character to upper-case.
            out.println(i + "," + team);
        }
        out.close();
        aFileWriter.close();
    }
}

2 个答案:

答案 0 :(得分:0)

在Java中,字符串是不可变的(无法更改),因此substringtoLowerCase等方法会生成新字符串 - 它们不会修改现有字符串。

所以而不是:

team.toLowerCase();                
team.substring(0,1).toUpperCase();  
out.println(team);

你需要这样的东西:

String first = team.substring(0,1).toUpperCase();  
String rest = team.substring(1,team.length()).toLowerCase();                
out.println(first + rest);

答案 1 :(得分:0)

与建议的@DNA类似但如果String length为1则会抛出异常。因此添加了相同的检查。

        String output = team.substring(0,1).toUpperCase(); 
        // if team length is >1 then only put 2nd part
        if (team.length()>1) {
            output = output+ team.substring(1,team.length()).toLowerCase();
        }
        out.println(i + "," + output);