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
我编译并运行。我有两个问题:
谢谢。对问题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++;}哇!就这么简单!非常感谢,先生。它起作用了。感激