Java字符串如何转换为long型

在Java编程中,经常会遇到将字符串转换为long型的需求。字符串转换为long型可以用于处理用户输入、读取文件中的数字等场景。本文将介绍两种常用的方法来实现Java字符串到long型的转换,并提供代码示例和解决一个具体问题的方案。

方法一:使用Java内置的Long.parseLong()方法

Java提供了一个内置的方法Long.parseLong(),可以将字符串转换为long型。这个方法的语法如下:

public static long parseLong(String s) throws NumberFormatException

其中,s是要转换的字符串。这个方法会尝试将字符串解析为一个有符号的十进制数,并返回对应的long型结果。如果字符串无法解析为long型,会抛出NumberFormatException异常。

下面是使用Long.parseLong()方法将字符串转换为long型的示例代码:

String str = "12345";
long num = Long.parseLong(str);
System.out.println(num); // 输出:12345

方法二:使用Java内置的Long.valueOf()方法

另一种将字符串转换为long型的方法是使用Long.valueOf()方法。这个方法的语法如下:

public static Long valueOf(String s) throws NumberFormatException

Long.parseLong()方法类似,s是要转换的字符串。Long.valueOf()方法会尝试将字符串解析为一个有符号的十进制数,并返回对应的Long对象。如果字符串无法解析为long型,同样会抛出NumberFormatException异常。

下面是使用Long.valueOf()方法将字符串转换为long型的示例代码:

String str = "12345";
Long num = Long.valueOf(str);
System.out.println(num); // 输出:12345

需要注意的是,Long.valueOf()方法返回的是一个Long对象,而不是基本数据类型long。如果需要将Long对象转换为基本数据类型long,可以使用Long.longValue()方法。

解决一个具体问题的方案

假设我们需要实现一个简单的学生成绩管理系统,要求用户输入学生的分数,并计算平均分。用户输入的成绩以字符串的形式给出,例如"90"、"85"等。我们需要将这些字符串转换为long型,然后进行计算。

下面是一个基于命令行界面的学生成绩管理系统的设计方案:

classDiagram
    class Student {
        -name: String
        -scores: List<Long>
        +Student(name: String)
        +addScore(score: long)
        +getAverageScore(): double
    }
    class ScoreManager {
        -students: List<Student>
        +ScoreManager()
        +addStudent(name: String)
        +addScore(name: String, score: long)
        +getAverageScore(name: String): double
    }

首先,我们定义一个Student类来表示学生对象。这个类包含一个学生姓名和一个成绩列表。成绩列表使用List<Long>来存储学生的分数。

import java.util.ArrayList;
import java.util.List;

public class Student {
    private String name;
    private List<Long> scores;

    public Student(String name) {
        this.name = name;
        this.scores = new ArrayList<>();
    }

    public void addScore(long score) {
        scores.add(score);
    }

    public double getAverageScore() {
        if (scores.isEmpty()) {
            return 0;
        }
        long sum = 0;
        for (long score : scores) {
            sum += score;
        }
        return (double) sum / scores.size();
    }
}

然后,我们定义一个ScoreManager类来管理学生成绩。这个类包含一个学生列表,可以添加学生和成绩,并计算某个学生的平均分。

import java.util.ArrayList;
import java.util.List;

public class ScoreManager {
    private List<Student> students;

    public ScoreManager() {
        this.students = new ArrayList<>();
    }

    public void addStudent(String name) {
        Student student = new Student(name);
        students.add(student);
    }

    public void addScore(String name, long score) {
        for (Student student : students) {
            if (student.getName().equals(name)) {
                student.addScore(score);
                return;
            }
        }
        throw new IllegalArgumentException("Student not found: " + name);
    }

    public double getAverageScore(String name) {
        for (Student student : students) {