Java代码跳过第一个if条件,并跳过其他条件
我正在写一个简单的程序,当年龄小于13岁,介于13到18岁之间,以及超过18岁时,它会产生一定的输出。我的代码没有读过第一个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
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
。用面向对象的方式思考。