java - 使用从扫描仪获取的字符串不起作用?

标签 java java.util.scanner

当我运行程序并输入等级和性别时,它会对我大喊大叫,告诉我这是一个无效的性别。我不明白为什么如果我在控制台中输入“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/

相关文章:

java - 由于某种原因数据没有存储在 SQLite 数据库中?错误

java - JPA 和 Hibernate - id 生成器

java - 获取格林威治标准时间

一行中来自 Scanner 的 Java 输入日期

java - 计算字符串中的整数

java - 使用私钥后如何从内存中清除私钥数据?

java - 在自定义 Eclipse 文本编辑器插件中打开文件之前处理文件

android - Scanner 从什么 API 级别实现了 Closeable?

java - 从文件中读取整数值 (Java)

java - 检查Java中scanner的第一个元素是否