gpt4 book ai didi

java - 尝试从标准输入打印较小的字符串,获得混合输出

转载 作者:行者123 更新时间:2023-12-03 07:31:06 25 4
gpt4 key购买 nike

import java.util.Scanner;

public class lesserString2 {

public static void main(String args[]) {
Scanner r = new Scanner(System.in);
int y = 0;
int result = 0;
String s = null;
String q = null;
while (y < 2) {
s = r.nextLine();
y = y + 1;
q = r.nextLine();
y = y + 1;
}
if (y >= 2){
result = s.compareTo(q);
}
if(result == 0) {
System.out.println("The strings are equal, please try again.");
} else if(result == 1) {
System.out.println("Lesser is: " + s);
} else if(result < 0) {
System.out.println("Lesser is: " + q);
}
}
}

当我尝试通过标准输入提交两个不同的句子时,我得到了混合结果。例如...

C:\Users\...>java lesserString2
how does the cat jump
very quickly i think
Lesser is: very quickly i think

C:\Users\...>java lesserString2
Jack Sprat can eat no fat
His wife can eat no lean

为什么第二次就不行了?我怎样才能让它每次都能工作?我尝试的第二个实际上没有输出任何内容......它只是一个空行。

最佳答案

两个主要问题是您正在使用 result == 1您需要在哪里使用result > 0 ( compareTo 的正值可能不是 1 ;更多内容请参见下面的第 #3.2 项),并且您进行了向后比较,因此您实际上显示的是两个字符串中的“较大”而不是较小的(项目#3.1)。

但是该代码还有许多其他问题,以下是一个列表:

  1. while (y < 2)循环是完全没有必要的:y0 开始然后添加 1两次,所以它总是只执行一次。

  2. if (y >= 2)分支是完全没有必要的(参见#1)。

  3. 您滥用了 compareTo 的返回值有两种不同的方式:

    1. 当你得到的值大于0时,你是说s是“较小的”字符串。该值表示 s更大字符串。

    2. 您正在比较它 == 1 ,但是 compareTo 's contract 不保证它会是1 ,只是如果 s 它将是一个正数大于q , 0如果它们相等,或者如果 s 则为负数小于 q 。正数可能不是 1 .

  4. 在 Java 中,类名最初是有上限的。所以LesserString2 ,不是lesserString2 .

  5. 最好为变量使用有意义的名称

您没有得到任何输出的原因是上面列表中的#3.2。您获得了正值,但不是 1 .

这是解决上述问题的版本:

import java.util.Scanner;

public class LesserString2 {

public static void main(String args[]) {
Scanner inputScanner = new Scanner(System.in);
int result;
String firstString;
String secondString;

firstString = inputScanner.nextLine();
secondString = inputScanner.nextLine();
result = firstString.compareTo(secondString);
if (result == 0) {
System.out.println("The strings are equal, please try again.");
} else if (result < 0) {
System.out.println("Lesser is: " + firstString);
} else { // No need for: if (result > 0) {
System.out.println("Lesser is: " + secondString);
}
}
}

关于java - 尝试从标准输入打印较小的字符串,获得混合输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32199280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com