Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 阅读三个单词并按字典顺序排列_Java - Fatal编程技术网

Java 阅读三个单词并按字典顺序排列

Java 阅读三个单词并按字典顺序排列,java,Java,我正在尝试创建一个程序,要求用户键入三个单词并按字典顺序排序 榜样 输入三个用空格分隔的单词: 梨橙苹果 苹果 橙色的 梨 该程序运行良好(如果我尝试上面的示例),但我将在下面展示的一种组合示例除外 榜样 输入三个用空格分隔的单词: 橙苹果梨 苹果 梨 梨 程序跳过第一个单词(橙色),如果它应该出现在三个单词的中间。 我相信这一行代码会影响程序,因为它说“这个赋值永远不会被使用”,但我不确定如何修复它,因为我还是一个入门级Java学习者 中间=第一个单词 因为那条线没用过,所以梨出现

我正在尝试创建一个程序,要求用户键入三个单词并按字典顺序排序

榜样

  • 输入三个用空格分隔的单词:
  • 梨橙苹果
  • 苹果
  • 橙色的
该程序运行良好(如果我尝试上面的示例),但我将在下面展示的一种组合示例除外

榜样

  • 输入三个用空格分隔的单词:
  • 橙苹果梨
  • 苹果
<>程序跳过第一个单词(橙色),如果它应该出现在三个单词的中间。 我相信这一行代码会影响程序,因为它说“这个赋值永远不会被使用”,但我不确定如何修复它,因为我还是一个入门级Java学习者

  • 中间=第一个单词
因为那条线没用过,所以梨出现了两次

import java.util.*;
public static void main(String[] args) 
{

Scanner wordInput = new Scanner(System.in);
String firstWord;
String secondWord;
String thirdWord;


System.out.println("Enter three words separated by spaces: ");

firstWord = wordInput.next();
secondWord = wordInput.next();
thirdWord = wordInput.next();


String top = firstWord;
String bottom = firstWord;
if( top.compareTo(secondWord) > 0) 
{ 
top = secondWord; 
} 
if( top.compareTo(thirdWord) > 0) 
{ 
top = thirdWord; 
} 
if( bottom.compareTo(secondWord) < 0) 
{ 
bottom = secondWord; 
} 
if( bottom.compareTo(thirdWord) < 0) 
{ 
bottom = thirdWord; 
}   
String middle;
if( !firstWord.equals(bottom) && !firstWord.equals(top) ) 
{ 
middle = firstWord; 
} 
if( !secondWord.equals(bottom) && !secondWord.equals(top) ) 
{ 
middle = secondWord; 
} 
else 
{ 
middle = thirdWord; 
} 

System.out.println( top ); 
System.out.println( middle ); 
System.out.println( bottom ); 


}
}
import java.util.*;
公共静态void main(字符串[]args)
{
Scanner wordInput=新扫描仪(System.in);
字符串第一个字;
字符串第二个字;
字符串第三个字;
System.out.println(“输入三个用空格分隔的单词:”);
firstWord=wordInput.next();
secondWord=wordInput.next();
thirdWord=wordInput.next();
字符串top=第一个单词;
字符串底部=第一个字;
如果(顶部比较到(第二个字)>0)
{ 
top=第二个单词;
} 
如果(与(第三世界)相比顶部>0)
{ 
顶部=第三个字;
} 
if(底部比较到(第二个字)<0)
{ 
底部=第二个字;
} 
if(底部与(第三个字)相比<0)
{ 
底部=第三个字;
}   
中弦;
如果(!firstWord.equals(底部)和&!firstWord.equals(顶部))
{ 
中间=第一个单词;
} 
如果(!secondWord.equals(底部)和&!secondWord.equals(顶部))
{ 
中间=第二个单词;
} 
其他的
{ 
中间=第三个单词;
} 
系统输出打印项次(顶部);
System.out.println(中间);
System.out.println(底部);
}
}
有人知道我错过了什么或做错了什么吗(
请并感谢您的帮助!

您在选择中间的
单词时缺少了
else
:第一个
if
正确地将
橙色
分配给它,但最后一个
if
Pear
重新分配给它

以下是修复代码的方法:

if( !firstWord.equals(bottom) && !firstWord.equals(top) ) {
    middle = firstWord; 
} else if( !secondWord.equals(bottom) && !secondWord.equals(top) ) {
    middle = secondWord; 
}  else  {
    middle = thirdWord; 
} 

与其添加这么多条件,您只需通过TreeSet即可:

public static void main(String[] args) throws FileNotFoundException, IOException{
        Scanner wordInput = new Scanner(System.in);
        String firstWord;
        String secondWord;
        String thirdWord;


        System.out.println("Enter three words separated by spaces: ");

        firstWord = wordInput.next();
        secondWord = wordInput.next();
        thirdWord = wordInput.next();

        TreeSet<String> treeSet=new TreeSet<>();

        treeSet.add(firstWord);
        treeSet.add(secondWord);
        treeSet.add(thirdWord);
        for(String s:treeSet){
            System.out.println(s);
        }
    }
publicstaticvoidmain(字符串[]args)抛出FileNotFoundException、IOException{
Scanner wordInput=新扫描仪(System.in);
字符串第一个字;
字符串第二个字;
字符串第三个字;
System.out.println(“输入三个用空格分隔的单词:”);
firstWord=wordInput.next();
secondWord=wordInput.next();
thirdWord=wordInput.next();
TreeSet TreeSet=新树集();
添加(第一个单词);
树集。添加(第二个单词);
添加树集(第三个词);
用于(字符串s:treeSet){
系统输出打印项次;
}
}
如果您有副本:

    Map<String, Integer> treeMap=new TreeMap<>();
    if(treeMap.containsKey(firstWord)){
        Integer i=treeMap.get(firstWord);
        i++;
        treeMap.put(firstWord, i);
    }
    else{
        treeMap.put(firstWord, 1);
    }
    if(treeMap.containsKey(secondWord)){
        Integer i=treeMap.get(secondWord);
        i++;
        treeMap.put(secondWord, i);
    }
     else{
        treeMap.put(secondWord, 1);
    }
    if(treeMap.containsKey(thirdWord)){
        Integer i=treeMap.get(thirdWord);
        i++;
        treeMap.put(thirdWord, i);
    }
     else{
        treeMap.put(thirdWord, 1);
    }
    for(String s:treeMap.keySet()){
        int k=treeMap.get(s);
        while(k>0){
            System.out.println(s);
            k--;
        }
    }
Map treeMap=newtreemap();
if(树映射containsKey(第一个字)){
整数i=treeMap.get(第一个字);
i++;
树映射放置(第一个字,i);
}
否则{
树映射放置(第一个字,1);
}
if(树映射containsKey(第二个单词)){
整数i=treeMap.get(第二个字);
i++;
树映射put(第二个字,i);
}
否则{
树映射放置(第二个字,1);
}
if(树状图containsKey(第三世界)){
整数i=treeMap.get(第三个字);
i++;
树状图(第三世界,i);
}
否则{
树状图put(第三世界,1);
}
对于(字符串s:treeMap.keySet()){
int k=树映射get(s);
而(k>0){
系统输出打印项次;
k--;
}
}

这里是另一个代码更少的解决方案

public static void main(String[] args) {
    // TODO code application logic here
    System.out.println("Enter three words separated by spaces: ");
    //Scanner wordsInput = new Scanner(System.in);
    Console console = System.console();

    //List<String> words = new ArrayList<>();
    List<String> words = Arrays.asList(console.readLine().split("\\s+"));
    Collections.sort(words);
    for (String word : words) {
         System.out.println(String.format("- %s",word));
    }
}
publicstaticvoidmain(字符串[]args){
//此处的TODO代码应用程序逻辑
System.out.println(“输入三个用空格分隔的单词:”);
//扫描器字输入=新扫描器(System.in);
Console=System.Console();
//List words=new ArrayList();
List words=Arrays.asList(console.readLine().split(\\s+));
集合。排序(单词);
for(字符串字:字){
System.out.println(String.format(“-%s”,word));
}
}

很聪明,但是如果你输入
苹果梨
,它会打印什么?@Gabe这并不太难,使用树形图并计算频率。你想让我更改代码吗?谢谢你的帮助!我很感激,但我的导师会拒绝代码,让我重新编写。不过,这在编码方面肯定要简单得多!:)谢谢你们的帮助!我真不敢相信我和其他人在一起时是多么的盲目(我的导师严格地只允许我使用If语句、case开关和/或comparedTo。如果我使用TreeSet,他会反驳我的观点,老实说,我还没有足够的能力认为我可以使用那套代码。谢谢dasblinkenlight!这对我真的很有帮助。我不敢相信我错过了Else If。