比较字符串和整数(java)

时间:2015-08-14 20:31:40

标签: java string parsing int compare

我遇到了一些Java编程问题而且我对比较操作数如何在输入之间起作用感到很困惑。

我想要的是我的程序接收输入,分析输入,检查它等于什么,并根据输入显示消息。我如何将输入与我设置的option1变量进行比较?

这是一个名为 loadfile.java

的文件
package subsets;

import java.io.*;
import java.util.Scanner;

public class loadfile {

        public static void main(String args[]) {

        }

        public static void choose(String[] args) {

            // Set an option
            int option1 = 1;

            // Start grabbing input
            System.out.print("Choose one: ");
            Scanner scanner = new Scanner( System.in );
            String input = scanner.nextLine();

            // Parse input into an integer (expecting int)
            int selection = Integer.parseInt(input);

            // If input == option1, let's go with this code.
            if(input.equals(option1)){

                System.out.println("You choose option 1.");

            }
        }
}

我在另一个文件中有loadfile.choose(args);,该文件处理我将要实现的其余文件。

此处有以下文件: otherfile.java

package subsets;

public class otherfile {

        public static void main(String args[]){
            System.out.println("Please select an option (using number keys): \n");
            System.out.println(
                    "1. Option 1 \n"
                    + "2. Option 2 \n"
                    + "3. Option 3 \n"
                    + "4. option 4 \n");

            // Start analyzing their choice
            loadfile.choose(args);
        }

}

3 个答案:

答案 0 :(得分:1)

您可以将int option1 = 1;更改为String option1 = "1";或将用户输入解析为整数,或执行scanner.nextInt()而不是nextLine这里有很多选项可以解决此问题。 Integer.parseInt(String)

答案 1 :(得分:1)

equals()仅在相同类型的对象之间有效。

int甚至不是一个对象,但是当Java将它作为参数传递给期望Integer的方法时,它会隐式地将它转换为Object对象({{1} }}是Integer - 所有类都扩展Object)。

但现在Objectequals对象与String对象进行比较。由于它们的类型不同,因此总是错误的。

为了正确地进行比较,你必须通过解析来获得Integer中字符串的整数。例如,使用int

而且......你做到了这一点,但你忘了使用你的手术结果。您拥有Integer.parseInt()变量,只需比较selection而不是selection

当然,在这种情况下,您只需使用input而不是selection == option1,因为equals是原始的,并且没有方法。

答案 2 :(得分:0)

通常,在比较不同类型的对象时,A - flight_date B - plane ticket price C - source_airport_country D - ticket holder names E - address F - source airport G - Pilot_name H - Pilot_grade I - Plane_id 方法会返回true。这是equals

的实现
String#equals(Object)

请注意支票public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = count; if (n == anotherString.count) { char v1[] = value; char v2[] = anotherString.value; int i = offset; int j = anotherString.offset; while (n-- != 0) { if (v1[i++] != v2[j++]) return false; } return true; } } return false; }

在你的情况下,我不明白为什么不这样做:

if (anObject instanceof String)

因为您已经获得了if (selection == option1) { 变量。