方法不按计划工作?

时间:2014-03-10 20:17:52

标签: java arrays string while-loop return

Scanner adjectives = new Scanner(new File("adjectives.txt"));
        String[] adjectiveArray;
        adjectiveArray = new String[25];
        int counter = 0;
        while (counter<25)
        {
            String in = adjectives.next();
            fixCapitalization(in);
            adjectiveArray[counter]=in;
            counter++;
        }

我正在尝试使用的主要代码和方法是......

public static String fixCapitalization(String original)
{
    String modified = original.toLowerCase();
    return Character.toUpperCase(modified.charAt(0)) + modified.substring(1);

}

我试图在将它放入数组之前修复单词的大小写,但是后来在我的程序中我注意到adjectiveArray中的单词没有被大写?我到底哪里错了?

5 个答案:

答案 0 :(得分:2)

String是不可变的

替换

fixCapitalization(in);
adjectiveArray[counter] = in;

adjectiveArray[counter] = fixCapitalization(in);

答案 1 :(得分:2)

最简单的方法..做吧

adjectiveArray[counter] = fixCapitalization(in);

答案 2 :(得分:1)

您忽略了fixCapitalization的回复。尝试更改

fixCapitalization(in);

in = fixCapitalization(in);

答案 3 :(得分:1)

您需要像这样从fixCapitalization()方法分配返回值,因为String是不可变的,并且它不会更改您传递给fixCapitalization()的相同String的值。

所以试试这个:

String in = adjectives.next();
in = fixCapitalization(in);

答案 4 :(得分:0)

您没有使用Method - fixCapitalization返回的字符串 以下是解决此问题的代码。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;


class test {
    public static void main() throws FileNotFoundException{
        Scanner adjectives = new Scanner(new File("adjectives.txt"));
        String[] adjectiveArray= new String[25];
        int counter = 0;
        while (counter<25){
            String in = adjectives.next();
            adjectiveArray[counter]=fixCapitalization(in);
            counter++;
        }
    }
    public static String fixCapitalization(String original){
        String modified = original.toLowerCase();
        return Character.toUpperCase(modified.charAt(0)) + modified.substring(1);
    }
}