我对Java方法有疑问,可以给我一些建议吗?

问题描述

我的任务是分割程序,该程序将句子中最长的单词输出到同一类中的许多方法中。我一直在尝试不同的方法,但似乎都没有效果。有人可以帮我吗? 这是程序:

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