簡體   English   中英

方法無法按計划工作?

[英]Method not working as Planned?

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中的單詞沒有大寫嗎? 我到底哪里出問題了?

String是不可變的

更換

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

adjectiveArray[counter] = fixCapitalization(in);

最簡單的方法..就做

adjectiveArray[counter] = fixCapitalization(in);

您忽略了fixCapitalization的返回。 嘗試改變

fixCapitalization(in);

in = fixCapitalization(in);

您需要像這樣從fixCapitalization()方法分配返回值,因為String是不可變的,並且不會更改傳遞給fixCapitalization()的同一String的值。

所以試試這個:

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

您沒有使用從方法返回的字符串-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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM