簡體   English   中英

我對 Java 上的方法有疑問,可以給我一些建議嗎?

[英]I have a problem with methods on Java could I have some advice?

我的任務是將輸出句子中最長單詞的程序拆分為同一類中的多個方法。 我一直在嘗試不同的方法,但似乎都沒有奏效。 有人可以幫我嗎? 這是程序:

import java.util.Scanner;
public class Test{
    
    public static str getUserInput(Scanner sc) {
        System.out.print("Enter a string or sentence: ");
        // Return the string inputted by the user
        return sc.nextLine();
        return str;
    }

    public static void getlongestWord(str) { 
        Scanner str2 = new Scanner(str);  
        //Initialise longestWord with the first word in str
        String longestWord = str2.next();
        //Initiaise maxlen with length of first word in str
        int maxlen = longestWord.length();
        while(str2.hasNext())  //This loop will keep running till words are present
        {
            String word = str2.next(); //Storing next word in variable
            int len = word.length();    //Storing word's length
            if(len>maxlen)  //If this length is more than maxlen, longestWord and maxlen are changed
            {

                longestWord = word;  
                maxlen = len;
            }
        }
        return longestWord;
        return maxlen;
    }
    int longestWord;
    int maxlen;
    public static void getOutput (int longestWord) {
        System.out.println("The longest word is '" + longestWord );
    }

    public static void getOuput2 (int maxlen){
        System.out.println ("of length "+maxlen+" characters.");
    }
}

我在你的代碼中留下了一些評論:

import java.util.Scanner;

public class Test {

    public static str getUserInput(Scanner sc) { // The return type should be of type String and not str.
        System.out.print("Enter a string or sentence: ");
        return sc.nextLine();
        return str; // you can't have a return statement immediately after another return statement :)
    }

    public static void getlongestWord(str) { // The method parameter is not of a valid type (it is not String)
        Scanner str2 = new Scanner(str);  
        String longestWord = str2.next();
        int maxlen = longestWord.length();
        while(str2.hasNext())
        {
            String word = str2.next(); 
            int len = word.length();    
            if(len>maxlen)
            {

                longestWord = word;  
                maxlen = len;
            }
        }
        return longestWord;
        return maxlen; // you can't have a return statement immediately after another return statement :)
    }
    int longestWord; // Instance variables should be declared at the top of the class
    int maxlen;

    public static void getOutput(int longestWord) { // Methods named {getSomething()} should return that something. This method returns void.
        System.out.println("The longest word is '" + longestWord);
    }

    public static void getOuput2(int maxlen) { // Focus on proper naming.
        System.out.println("of length " + maxlen + " characters.");
    }
}

我還寫了我自己的版本,說明您要執行的操作:

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        System.out.print("Enter a string or sentence: ");
        Scanner sc = new Scanner(System.in);
        processInput(sc);
    }

    public static void processInput(Scanner sc) {
        String sentence = sc.nextLine();
        String longestWord = findLongestWord(sentence);
        printInfo(longestWord);
    }

    public static String findLongestWord(String sentence) {
        String longest = "";
        for (String currentWord : sentence.split(" ")) {
            if (longest.length() < currentWord.length())
                longest = currentWord;
        }
        return longest;
    }

    public static void printInfo(String longestWord) {
        System.out.println("The longest word is '" + longestWord);
        System.out.println("of length " + longestWord.length() + " characters.");
    }

}

我的解決方案絕不是完美的解決方案,因此您可以繼續了解我所做的更改,然后實施您自己的更改。 請記住:每個類和方法都應該只負責一件事。

一個簡單的方法是在空白處拆分字符串,然后迭代結果數組以找到最長的單詞。 要找到最長的單詞,您可以假設第一個單詞是最長的,並將其存儲在一個變量中(例如String longestWord ),只要遇到比這個更長的單詞,就用該單詞替換存儲的單詞。

public class Main {
    public static void main(String[] args) {
        // Test string
        String str = "Stack Overflow is the largest, most trusted online community for developers to learn, share​ ​their programming ​knowledge, and build their careers.";
        System.out.println("The longest word in the sentence: " + getLongestWord(str));
    }

    static String getLongestWord(String str) {
        // Split the string on whitespace
        String[] arr = str.split("\\s+");

        // Start with the assumption that the first word is longest
        String longestWord = arr[0];
        int maxLen = longestWord.length();

        for (String s : arr) {
            if (s.length() > maxLen) {
                maxLen = s.length();
                longestWord = s;
            }
        }

        return longestWord;
    }
}

輸出:

The longest word in the sentence: programming

暫無
暫無

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

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