在java中按字母顺序确定没有数组的最高单词
我一直在尝试编写一个程序,它可以做两件事,在用户生成的字符串中查找最长的单词,并按字母顺序查找最高的单词。我有最长的单词“工作正常”,但我无法找出字母顺序问题来挽救我的生命。我遇到的问题是如何比较for循环中运行的单词。任何帮助都将不胜感激
/*
CSC 190
Hw7
Ryan Burchfield
10/19/17
Purpose: Take a string and return both the Longest and largest words in the String.
*/
package hw7;
import java.util.Scanner;
class MyString{
String s;
MyString( String s1 ){
s=s1;
}
void setString(String s1){
s=s1;
}
String getLongest(String s1){
s1 = s1 +" ";
int length = s1.length();
String temp="", longestw="";
char ltr;
int templ, longest=0;
for(int i=0; i<length;i++){
ltr = s1.charAt(i);
if(ltr!=' ' && ltr!=',' && ltr!='.'){
temp=temp+ltr;
}
else{
templ=temp.length();
if(templ>longest){
longest=templ;
longestw=temp;
}
temp="";
}
}
return longestw;
}
String getLargest(String s1){
s1= s1 + " ";
String temp="", curWord="",largestW="";
char ltr;
for(int i=0; i<s1.length(); i++){
ltr = s1.charAt(i);
if(ltr!=' ' && ltr!=',' && ltr!='.'){
temp= temp + ltr;
}else{
char ltr1;
for(int j=0; j<s1.length(); j++){
ltr1 = s1.charAt(j);
if(ltr1!=' ' && ltr1!=',' && ltr1!='.'){
curWord= curWord + ltr1;
}
else{
int largest = temp.compareToIgnoreCase(curWord);
System.out.println(temp+","+curWord+","+temp.compareToIgnoreCase(curWord));
System.out.println(largest);
if(largest > 0){
largestW=curWord;
}else{
largestW=temp;
}
curWord="";
temp="";
}
}
}
}
return largestW;
}
}
public class Hw7 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Please enter a series of words: ");
String s = in.nextLine();
MyString s1 = new MyString(s);
System.out.println("The longest word is: " + s1.getLongest(s));
System.out.println("The largest word is: " + s1.getLargest(s));
}
}
# 1 楼答案
那里有很多代码,几乎所有的代码都是不必要的
试试这个:
注意:在提交作业之前,请仔细阅读并理解代码
免责声明:代码可能无法编译,甚至无法在我的手机上使用(但它很有可能会工作)
# 2 楼答案
作为你的帖子,你可以得到最长的单词。我将向您展示如何按照最长单词的字母顺序获取最高字母
有一个方法调用toCharArray(),您可以使用这个方法来生成给定单词的字母数组
然后可以使用强制转换来获取给定字符值的整数值
然后您可以比较该整数值以获得最高整数值
一旦你有了最高的整数值,就把这个int值转换成char来表示字母
以下链接可获得更多信息
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#toCharArray()
http://javaseeeedu.blogspot.com/2015/12/casting-part-1.html
我已经更改了你的代码,试试看
# 3 楼答案
这就是程序出错的地方。您没有将
currWord
/temp
与largestW
进行比较写入
getLargest()
的更好方法是使用与getLongest()
相同的方法,即使用一个循环,每次将largestW
与temp
进行比较(如果largestW
为空,则只需设置largestW = temp
)# 4 楼答案
我会用一个方法来解决这个问题,这个方法需要} 构造函数构造} 修改分隔符以使用空格、逗号和文字
Comparator<String>
和输入String
;使用^{Scanner
,并使用^{'.'
。然后使用提供的Comparator
来比较通过Scanner
可用的令牌。比如然后,假设您使用的是Java 8+,
main
可以使用Comparator
编写,比如——但是,如果您使用的是较早的版本,或者您想更好地理解它的功能,那么如果您用等效的代码替换这两个
Comparator
则完全相同的代码将起作用,比如