有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

我对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.");
    }
}

共 (2) 个答案

  1. # 1 楼答案

    一种简单的方法是在空白处拆分字符串,然后迭代生成的数组以查找最长的单词。要查找最长的单词,可以先假设第一个单词最长,然后将其存储在变量(例如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
    
  2. # 2 楼答案

    我在您的代码中留下了一些注释:

    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.");
        }
    
    }
    

    我的解决方案决不是一个完美的解决方案,因此您可以继续了解我所做的更改,然后实施您自己的更改。 记住:每个类和方法只应该负责一件事