java scan输出奇怪的if else逻辑错误

时间:2017-09-11 20:25:36

标签: java java.util.scanner

嘿,人们向你问候,其实是新编码器,所以我只是想知道我的代码中的问题,请告诉逻辑,即使进入高达20岁的年龄,我也无法在那里打印其他声明输出仍然与if语句

的输出相同

import java.util.*;
public class Shivam 
{
    int age;

    void function()
    {
        if (age<=10)
        {
            System.out.println("chutiye chota h tu");
        }
        else
        { 
            System.out.println("bada ho gya saale");
        }
    }

    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        int age=sc.nextInt();
        Shivam s1=new Shivam();
        s1.function();
        sc.close();
    }
}

1 个答案:

答案 0 :(得分:1)

原因是当您使用function()方法创建自定义类的实例时。

Shivam s1=new Shivam();

int age;age的值设置为原语0的默认值。

现在打电话

s1.function();

条件

if (age<=10) //evaluates to true

现在,要解决此问题,您应该接受age作为function()的参数,而不是作为类的字段:

public static void function(int age) {
    if (age<=10) {
       ...
    } else { 
       ...
    }
}

然后调用与

相同的方法
s1.function(age); // from inside your main method