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。