为什么id为1的学生的年龄运行输出没有增加package MianXiangDuiXiangDemo3; public class StudentsTest2 { public static void main(String[] args) { //创建数组 Students[] arr = new Students[3]; //创建学生对象 Students stu1 = new Students("财", 1, 24); Students stu2 = new Students("来", 2, 26); Students stu3 = new Students("旺", 3, 21); //添加到数组 arr[0] = stu1; arr[1] = stu2; arr[2] = stu3; //5、查询id为“heima002"的学生,如果存在,则将他的年龄加一 int index = getIndex(arr,1); if (index >= 0){ Students stu =arr[index]; int newage = stu.getAge() + 1; stu.getAge(newage); printArr(arr); }else { System.out.println("当前id不存在,修改失败"); } } //找到id在数组中的索引 public static int getIndex(Students[] arr,int id){ for (int i = 0; i < arr.length; i++) { Students stu = arr[i]; if (stu !=null){ int sid = stu.getId();//sid存在的学生id if (sid == id){ return i; } } } return -1;// } private static void printArr(Students[] arr) { for (int i = 0; i < arr.length; i++) { Students stu = arr[i]; if (stu != null) { System.out.println(stu.getId() + "," + stu.getName() + "," + stu.getAge()); } } } }
时间: 2024-01-09 08:06:10 浏览: 24
在代码中,更新学生年龄的代码有问题。应该使用 `stu.setAge(newage);` 而不是 `stu.getAge(newage);`。因为 `getAge()` 方法只是获取年龄的值,并不会修改年龄。修改后的代码如下:
```
//5、查询id为“1”的学生,如果存在,则将他的年龄加一
int index = getIndex(arr,1);
if (index >= 0){
Students stu =arr[index];
int newage = stu.getAge() + 1;
stu.setAge(newage);
printArr(arr);
}else {
System.out.println("当前id不存在,修改失败");
}
```
这样就可以正确地将 id 为 1 的学生年龄加一并输出了。
相关问题
import java.util.Scanner; package base; public class scaner { public static void main(String[] args) { } } 改错
在代码的开头处移除多余的import语句,将package语句放在import语句后面,同时将类名从"scaner"改为"Scanner",修正后的代码如下:
```java
package base;
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
// 在这里编写你的代码
}
}
```
请注意,你需要在`main`方法中编写你的代码,这只是一个修正后的代码框架。
编程要求 根据提示,在右侧编辑器补充代码,使用继承Thread类的方式创建多线程,循环输出:线程在运行......package step1; public class CreateThreadPractice { public static void main(String[] args) { MyThread myThread = new MyThread();
好的,以下是符合您要求的代码:
```
package step1;
public class CreateThreadPractice {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
class MyThread extends Thread {
@Override
public void run() {
while (true) {
System.out.println("线程在运行......");
}
}
}
```
在该代码中,我们创建了一个继承自Thread类的线程类 `MyThread`,并重写了 `run()` 方法,在该方法中使用一个无限循环输出"线程在运行......"。
在 `main()` 方法中,我们创建了一个 `MyThread` 对象并调用了 `start()` 方法来启动该线程。这样,线程会一直运行并输出预期的结果。