当我运行程序并输入等级和性别时,它会对我大喊大叫,告诉我这是一个无效的性别。我不明白为什么如果我在控制台中输入“male”,它不等于字符串“male”?请向我解释为什么这不起作用,也许还有一些关于如何修复它的建议?谢谢!
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class BabyNames {
public static void main(String[] args) throws IOException {
Scanner input = new Scanner(System.in);
System.out.print("Enter male or female: ");
String gender1 = input.next();
System.out.print("Enter rank: ");
int rank = input.nextInt();
while (!(gender1 == "female" || gender1 == "male")){
System.out.println("Please try again with a valid gender.");
System.out.println("");
System.out.println("Enter male or female: ");
gender1 = input.next();
}
while (rank <= 0 || rank > 1000){
System.out.println("Please try again with a valid rank.");
System.out.println("");
System.out.println("Enter rank: ");
rank = input.nextInt();
}
findRank(gender1, rank);
}
public static void findRank(String gender2, int rank) throws IOException {
File babyNames = new File("/home/skatty14/Downloads/BabyNames.txt");
Scanner input = new Scanner(babyNames);
int rankCount = 0;
while (input.hasNextLine()){
rankCount++;
System.out.println(rankCount);
if (gender2 == "male"){
String name = input.next();
System.out.println(name);
}
if (gender2 == "female"){
String name = input.next();
System.out.println(name);
}
}
}
}
最佳答案
要比较字符串
,您需要使用.equals()
因此,将所有与 ==
的字符串比较更改为使用 .equals()
。
if(gender1 == "male") { ... }
会变成,
if(gender1.equals("male")) { ... }
依此类推。
关于java - 使用从扫描仪获取的字符串不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4029443/