Java中通过键盘输入学生姓名,然后统计输入了多少个学生姓名
时间: 2024-05-07 13:20:47 浏览: 7
可以使用Scanner类来实现从键盘输入学生姓名并统计个数。具体实现如下:
```java
import java.util.Scanner;
public class StudentNameCounter {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int count = 0; // 计数器,用于统计学生姓名个数
while (true) {
System.out.print("请输入学生姓名(输入exit退出):");
String name = scanner.nextLine();
if ("exit".equals(name)) {
break; // 如果输入exit,则结束循环
}
count++; // 统计学生姓名个数
}
System.out.println("一共输入了" + count + "个学生姓名");
scanner.close();
}
}
```
运行上述代码,将会不断从键盘输入学生姓名,直到输入exit结束循环,最后输出输入的学生姓名个数。
相关问题
用Java实现以下描述:输入5个学生的信息(包含学号、姓名、3科成绩),统计各学生的总分,然后将学生信息和统计结果存入二进制数据文件STUDENT.DAT中,再从STUDENT.DAT文件中读取数据,寻找平均分最高的学生,并输出该学生的所有信息。完整代码即可
### 回答1:
以下是用 Java 实现上述功能的代码示例:
```
import java.io.*;
import java.util.Scanner;
// 定义学生类,包含学号、姓名、3科成绩、总分、平均分
class Student implements Serializable {
int id;
String name;
int score1;
int score2;
int score3;
int total;
double avg;
// 构造函数,用于创建学生对象
public Student(int id, String name, int score1, int score2, int score3) {
this.id = id;
this.name = name;
this.score1 = score1;
this.score2 = score2;
this.score3 = score3;
this.total = score1 + score2 + score3;
this.avg = total / 3.0;
}
// 输出学生信息的方法
public void printInfo() {
System.out.println("学号:" + id + " 姓名:" + name + " 成绩1:" + score1 + " 成绩2:" + score2 + " 成绩3:" + score3 + " 总分:" + total + " 平均分:" + avg);
}
}
public class Main {
public static void main(String[] args) throws IOException, ClassNotFoundException {
// 创建学生数组,用于存储输入的 5 个学生信息
Student[] students = new Student[5];
// 创建输入流对象,用于从键盘输入学生信息
Scanner in = new Scanner(System.in);
// 循环输入 5 个学生信息
for (int i = 0; i < 5; i++) {
System.out.println("请输入第 " + (i + 1) + " 个学生的信息:");
System.out.print("学号:");
int id = in.nextInt();
System.out.print("姓名:");
String name = in.next();
System.out.print("成绩1:");
int score1 = in.nextInt();
System.out.print("成绩2:");
int score2 = in.nextInt
### 回答2:
下面是用Java实现的完整代码:
```java
import java.io.*;
class Student implements Serializable {
private String id;
private String name;
private int[] scores; // 三科成绩
public Student(String id, String name, int[] scores) {
this.id = id;
this.name = name;
this.scores = scores;
}
public int getTotalScore() {
int total = 0;
for (int score : scores) {
total += score;
}
return total;
}
@Override
public String toString() {
return "学生信息:学号-" + id + ",姓名-" + name + ",成绩-" + scores[0] + "," + scores[1] + "," + scores[2];
}
}
public class Main {
public static void main(String[] args) {
// 输入5个学生的信息
Student[] students = new Student[5];
students[0] = new Student("001", "张三", new int[]{80, 85, 90});
students[1] = new Student("002", "李四", new int[]{75, 88, 92});
students[2] = new Student("003", "王五", new int[]{90, 92, 95});
students[3] = new Student("004", "赵六", new int[]{85, 80, 87});
students[4] = new Student("005", "刘七", new int[]{78, 87, 92});
try {
// 将学生信息和统计结果存入二进制文件
FileOutputStream fos = new FileOutputStream("STUDENT.DAT");
ObjectOutputStream oos = new ObjectOutputStream(fos);
for (Student student : students) {
oos.writeObject(student);
}
oos.close();
// 从二进制文件中读取数据,寻找平均分最高的学生
FileInputStream fis = new FileInputStream("STUDENT.DAT");
ObjectInputStream ois = new ObjectInputStream(fis);
Student highestAvgScoreStudent = null;
double highestAvgScore = 0;
for (int i = 0; i < students.length; i++) {
Student student = (Student) ois.readObject();
double avgScore = (double) student.getTotalScore() / 3;
if (avgScore > highestAvgScore) {
highestAvgScore = avgScore;
highestAvgScoreStudent = student;
}
}
ois.close();
System.out.println("平均分最高的学生信息:");
System.out.println(highestAvgScoreStudent.toString());
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
```
这段代码首先创建了一个`Student`类,用于存储学生的信息,包括学号、姓名和三科成绩。`getTotalScore`方法用于计算学生的总分。然后在`Main`类中,创建了一个包含5个学生信息的`students`数组。
接下来,代码使用`FileOutputStream`和`ObjectOutputStream`将学生信息和统计结果存入一个名为`STUDENT.DAT`的二进制数据文件。然后使用`FileInputStream`和`ObjectInputStream`从`STUDENT.DAT`文件中读取数据,寻找平均分最高的学生,并输出该学生的所有信息。
最后运行程序,控制台将输出平均分最高的学生的学生信息。
### 回答3:
下面是使用Java实现题目描述的完整代码:
```java
import java.io.*;
class Student implements Serializable {
private int studentId;
private String studentName;
private int score1;
private int score2;
private int score3;
private int totalScore;
public Student(int studentId, String studentName, int score1, int score2, int score3) {
this.studentId = studentId;
this.studentName = studentName;
this.score1 = score1;
this.score2 = score2;
this.score3 = score3;
this.totalScore = score1 + score2 + score3;
}
public int getTotalScore() {
return totalScore;
}
public String toString() {
return "学号:" + studentId +
" 姓名:" + studentName +
" 成绩1:" + score1 +
" 成绩2:" + score2 +
" 成绩3:" + score3 +
" 总分:" + totalScore;
}
}
public class Main {
public static void main(String[] args) {
Student[] students = new Student[5];
students[0] = new Student(1, "张三", 80, 85, 90);
students[1] = new Student(2, "李四", 75, 90, 85);
students[2] = new Student(3, "王五", 95, 80, 88);
students[3] = new Student(4, "赵六", 88, 92, 75);
students[4] = new Student(5, "钱七", 90, 70, 85);
try {
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("STUDENT.DAT"));
for (Student student : students) {
outputStream.writeObject(student);
}
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("STUDENT.DAT"));
Student maxAvgScoreStudent = null;
int maxAvgScore = 0;
for (int i = 0; i < students.length; i++) {
Student student = (Student) inputStream.readObject();
System.out.println(student);
if (student.getTotalScore() > maxAvgScore) {
maxAvgScore = student.getTotalScore();
maxAvgScoreStudent = student;
}
}
inputStream.close();
System.out.println("平均分最高的学生信息:");
System.out.println(maxAvgScoreStudent);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
```
代码中首先定义了一个`Student`类,该类实现了`Serializable`接口,以便对象可以被序列化到二进制文件中。`Student`类有学生的学号、姓名以及3科成绩等属性,还有一个计算总分的方法`getTotalScore()`。
在`Main`类的`main`方法中,我们创建了一个包含5个学生信息的数组`students`。然后,我们通过`ObjectOutputStream`将学生信息写入到二进制数据文件`STUDENT.DAT`中。接着,使用`ObjectInputStream`从`STUDENT.DAT`文件中读取学生信息。
在读取过程中,我们同时计算平均分最高的学生,并将其存储在`maxAvgScoreStudent`变量中。最后,我们输出所有学生的信息以及平均分最高的学生的信息。
请注意,在实际使用中,应该添加异常处理以处理可能的文件操作异常。
定义一组字符串 names,键盘录入 10 个学生姓名保存到 names 数 组,判断 names 中有几个姓"张"的学生,及几个名字中含有“华”的学
下面是一个 Java 代码示例,实现了对输入的学生姓名进行判断,统计姓“张”的学生数量和名字中含有“华”的学生数量:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] names = new String[10];
int countZhang = 0;
int countHua = 0;
// 输入学生姓名并保存到 names 数组
for (int i = 0; i < 10; i++) {
System.out.print("请输入第" + (i + 1) + "个学生的姓名:");
names[i] = scanner.nextLine();
}
// 统计姓“张”的学生数量和名字中含有“华”的学生数量
for (String name : names) {
if (name.startsWith("张")) {
countZhang++;
}
if (name.contains("华")) {
countHua++;
}
}
System.out.println("姓\"张\"的学生数量为:" + countZhang);
System.out.println("名字中含有\"华\"的学生数量为:" + countHua);
}
}
```
运行程序后,可以依次输入 10 个学生姓名,然后程序会统计出姓“张”的学生数量和名字中含有“华”的学生数量,并输出结果。