Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java代码跳过第一个if条件,并跳过其他条件_Java - Fatal编程技术网

Java代码跳过第一个if条件,并跳过其他条件

Java代码跳过第一个if条件,并跳过其他条件,java,Java,我正在写一个简单的程序,当年龄小于13岁,介于13到18岁之间,以及超过18岁时,它会产生一定的输出。我的代码没有读过第一个if语句,我不知道我做错了什么 import java.io.*; import java.util.*; public class Person { public int age; public Person(int initialAge) { // Add some more code to run some checks on initialAge

我正在写一个简单的程序,当年龄小于13岁,介于13到18岁之间,以及超过18岁时,它会产生一定的输出。我的代码没有读过第一个if语句,我不知道我做错了什么

import java.io.*;
import java.util.*;
public class Person {
public  int age;    

public Person(int initialAge) {
    // Add some more code to run some checks on initialAge
    if (initialAge>-1){
        age=initialAge;
    }
    else 
        System.out.println("Age is not valid, setting age to 0. ");
        age=0;
}

public void amIOld() {
    // Write code determining if this person's age is old and print the correct statement:
    if(age<13)
     System.out.println("You are young.");   


    else if(age>=13&&age<18)
        System.out.println("You are a teenager."); 

   else 
    System.out.println("You are old.");


}

public void yearPasses() {
    // Increment this person's age.
    age++;
}
       public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int T = sc.nextInt();
            for (int i = 0; i < T; i++) {
                int age = sc.nextInt();
                Person p = new Person(age);
                p.amIOld();
                for (int j = 0; j < 3; j++) {
                    p.yearPasses();
                }
                p.amIOld();
                System.out.println();
            }
           sc.close();
        }
    }
import java.io.*;
导入java.util.*;
公共阶层人士{
公共信息;
公众人物(姓名首字母缩写){
//添加更多代码以对初始值运行一些检查
如果(初始值>-1){
年龄=初始年龄;
}
其他的
System.out.println(“年龄无效,将年龄设置为0”);
年龄=0;
}
公共图书馆{
//编写代码确定此人的年龄是否老,并打印正确的语句:

如果(age=13&&age在构造函数中,无论年龄是多少,您都将
age
设置为
0
。它不在
else
语句中。用括号将其括起来。

在构造函数中,无论年龄是多少,您都将
age
设置为
0
。它不在
else
语句中。将其括起来有括号。

我不完全确定您的问题是什么,但在我看来,您的ifs中缺少了很多花括号(“{”和“}”)。您应该只在没有任何“else”语句并且“if”只执行一行代码时才这样做


我不确定这是否能解决您的问题,但它至少会使代码更易于阅读和调试。

我不完全确定您的问题是什么,但在我看来,您的ifs中缺少了不少花括号(“{”和“}”)。您应该只在没有任何“else”语句和“if”语句时才这样做只执行一行代码


我不确定这是否能解决您的问题,但它至少会使代码更易于阅读和调试。

您所说的“不读取超过第一条if语句”是什么意思?当您在调试器中单步执行此操作时,您不希望发生的具体情况是什么?发生这种情况时,变量的运行时值是什么?如果语句不是简单地跳过的话。如果语句体没有运行,则表示条件是错误的。调试以找出原因。它会不断打印“you are young”无论我进入哪个年龄,我都希望它能打印出你是青少年,当我输入大于13或更大的数字时,你已经老了18@RaghuVarmaManthena:那么这是使用调试器的好机会。当错误发生时,
age
的值是多少?发送给构造函数的值是多少?逐步遍历构造函数,执行哪些代码行以及它们的作用是什么?您所说的“不读取超过第一条if语句”是什么意思?当您在调试器中单步执行此操作时,您不希望发生的具体情况是什么?发生这种情况时,变量的运行时值是什么?如果语句不是简单地跳过的话。如果语句体没有运行,则表示条件是错误的。调试以找出原因。它会不断打印“you are young”无论我进入哪个年龄,我都希望它能打印出你是青少年,当我输入大于13或更大的数字时,你已经老了18@RaghuVarmaManthena:那么这是使用调试器的好机会。当错误发生时,
age
的值是多少?发送给构造函数的值是多少?逐步遍历构造函数,执行哪行代码以及它们的作用是什么?始终使用括号,即使你认为它们不是必需的。这个简单的习惯将使你免于像这样不必要的麻烦。@Raghuvarmamantenna好吧,这是SHG的发现,而不是我的发现。但我不能再强调这一点了。永远不要跳过括号。为潜在的h而牺牲两次击键我们的调试是荒谬的。@RaghuVarmaManthena我还假设将参数传递给方法和
public void amIOld(int-age)
public void yearpasss(int-age)
。记住修改main()根据这一点。@RajithPemabandu:为什么一个人需要传递一个
自己的值给它?如果他不传递并且假设使用类变量,那么它可能会像
this.age
。用面向对象的方式思考。即使你认为不必要,也要始终使用括号。这个简单的习惯会让你避免像这样不必要的麻烦他的。@Raghuvarmamantena好吧,这是SHG的发现,不是我的。但我不能再强调这一点了。永远不要跳过括号。牺牲两次击键来进行可能长达数小时的调试是荒谬的。@Raghuvarmamantena我还想将参数传递给方法和
public void amIOld(int age)
public void yearpasss(int-age)
。记住根据这一点修改main()。@RajithPemabandu:为什么需要将
个人的值传递给它?如果他没有传递,并且假设使用类变量,那么可能类似于
this.age
。用面向对象的方式思考。