Java数组上的最后一个单词/句子

Java数组上的最后一个单词/句子,java,arrays,alphabetical,Java,Arrays,Alphabetical,我有一个任务,看起来很简单,但我不知道如何解决它 它说: a) 询问用户:你想写多少单词/句子(至少 至少5分钟?(在循环时使用) b) 使用for循环让用户写出单词/句子 c) 在用户写出单词/句子后,输出 单词/句子按字母顺序排在最后(使用.compareTo()方法) 这就是我想到的: import java.util.Scanner; import java.lang.String; import java.util.Arrays; public class LastString

我有一个任务,看起来很简单,但我不知道如何解决它

它说:

  • a) 询问用户:你想写多少单词/句子(至少 至少5分钟?(在循环时使用
  • b) 使用for循环让用户写出单词/句子
  • c) 在用户写出单词/句子后,输出 单词/句子按字母顺序排在最后(使用.compareTo()方法)
这就是我想到的:

import java.util.Scanner;
import java.lang.String;
import java.util.Arrays;

public class LastString {
public static void main (String [] args){
Scanner input = new Scanner (System.in);

final short MIN_NUM = 2;
int num = 0;
int count = 0;
String [] sentence = new String [0];
String last = "";

while (num < MIN_NUM){
  System.out.println("How many words/sentences do you want to put? " + "\t\t\t\t\t\t\t\t --- at least " + MIN_NUM);
  num = input.nextInt();
  sentence = new String [num];
}


for (int i = 0; i < num ; i++ ) {
  System.out.println("\nWrite a word/sentence" + "\t\t\t\t\t\t\t\t\t --- (Time: " + (i+1) + " )");
  sentence [i] = input.nextLine();
  System.out.println("The word/sentence is:  " + sentence[i]);
}

int i = 0;
int max;

for (i=0;i<num-1 ;i++ ) {
  if(sentence[i].compareTo(sentence[i+1]) > 0){
    last = sentence[i];
    count ++;
  }else if (sentence[i].compareTo(sentence[i+1]) < 0) {
      last = sentence[i+1];
      count++;
  }
}

System.out.println("\n\n------------" +
                  "\nLast word/sentence is: " + last);



System.out.println(Arrays.toString(sentence));

}

}
import java.util.Scanner;
导入java.lang.String;
导入java.util.array;
公共类LastString{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
最终短距离最小值=2;
int num=0;
整数计数=0;
字符串[]语句=新字符串[0];
字符串last=“”;
while(num
我编译并运行。我有两个问题:

  • 下一行>>>它跳过了第一句话

  • 我不知道如何使用算法来计算哪个单词/句子的值最大,或者使用compareTo()方法来计算哪个单词/句子的值>0,并与数组中的每个其他值进行比较


  • 谢谢。

    对问题1的回答:
    num=input.nextInt()
    接受一个数字作为输入,但不使用新行,因此
    nextLine
    使用空新行。。。您还可以使用
    input.nextLine
    来获取第一个数字,而不是
    num=input.nextLine()
    读取一行,然后将int值解析为
    num=Integer.parseInt(input.nextLine())

    对问题2的答复:

    您每次都会重新设置
    last
    的值,但在重新分配last之前,您不会将下一个最大候选值与
    last
    的值进行比较

    例如,请看以下内容:

    for (int i = 0; i < num - 1; i++) {
        String thisLast = "";
        if (sentence[i].compareTo(sentence[i + 1]) > 0) {
            thisLast = sentence[i];
            count++;
        } else if (sentence[i].compareTo(sentence[i + 1]) < 0) {
            thisLast = sentence[i + 1];
            count++;
        }
    
        if (thisLast.compareTo(last) > 0)
            last = thisLast;
    
    }
    
    for(int i=0;i0){
    最后一句=句子[i];
    计数++;
    }else if(句子[i]。比较(句子[i+1])<0){
    最后一句=句子[i+1];
    计数++;
    }
    如果(thisLast.compareTo(last)>0)
    last=这个last;
    }
    
    它会解决您的问题

        int count = 0;
        String [] sentence = new String[6];
        String last = "";
        for (int i = 0; i < num ; i++ ) {
          System.out.println("\nWrite a word/sentence" + "\t\t\t\t\t\t\t\t\t ---        (Time: " + (i+1) + " )");
          sentence [i] = input.nextLine();
          count++;
          if(count >= 2){
              if(sentence[i].compareTo(last) > 0){
                  last = sentence [i] ;
              }
          }else{
              last = sentence [i];
          }
          System.out.println("The word/sentence is:  " + sentence[i]);
    
    int count=0;
    字符串[]语句=新字符串[6];
    字符串last=“”;
    for(int i=0;i=2){
    如果(句子[i]。与(最后一个)>0比较){
    最后一句=句子[i];
    }
    }否则{
    最后一句=句子[i];
    }
    System.out.println(“单词/句子是:“+句子[i]);
    

    }

    一个“句子”可以用什么决定因素按字母顺序排序?我不明白这个问题。如果你的意思是大写或小写,那没关系。一个单词或一个句子就能做到这一点。对问题1的回答:
    num=input.nextInt()
    接受一个数字作为输入,但不使用新行,因此
    nextLine
    使用空新行。。。您还可以使用
    input.nextLine
    来获取第一个数字,而不是
    num=input.nextLine()
    读取一行,然后将int值解析为
    num=Integer.parseInt(input.nextLine())您是否已经尝试编写算法来查找数组中的最大值?这里的想法是一样的,但与compare相比,我已经尝试过多次了,我想到的最好的方法是第行的这个:我不知道,它适用于2个单词/秒的句子,其他方面它不适用,它只比较最后两个条目。对于(i=0;i0){last=statement[i];我不知道,它适用于2个单词/s的句子,换句话说,它不适用,它只比较最后两个条目。count++;}否则如果(statement[i].compareTo(statement[i+1])<0{last=statement[i+1];count++;}哇!就这么简单!非常感谢,先生。它起作用了。感激