gpt4 book ai didi

java - Java 中的符号表

转载 作者:行者123 更新时间:2023-11-30 10:57:32 27 4
gpt4 key购买 nike

我正在尝试用 Java 编写一个用于操作符号表的程序。我使用链表数据结构来表示我的符号表;链表(单独)有一个键,与该键关联的值,以及指向下一个点的指针。链表还为用户提供了向链表中插入新节点的功能。看起来我对链表类的实现进展顺利,但是当我尝试编写一个主程序来测试它时,我遇到了一些问题。尽管我设法以某种方式处理异常错误,但我的代码中存在逻辑错误。这是我编写的一段代码和输出:

import java.util.Scanner;
public class Test_GPA {
public static void main(String[]args){

// create symbol table of grades and values
GPA<String, Double> grades = new GPA<String, Double>();
grades.put("A", 4.00);
grades.put("B", 3.00);
grades.put("C", 2.00);
grades.put("D", 1.00);
grades.put("F", 0.00);
grades.put("A+", 4.33);
grades.put("B+", 3.33);
grades.put("C+", 2.33);
grades.put("A-", 3.67);
grades.put("B-", 2.67);
Scanner input = new Scanner(System.in);
double numb =0; int i=0;
double sum = 0.0;
String grade;
Double value;
System.out.println("Please enter number of courses:");
numb=input.nextInt();
while(i<numb){
System.out.println("Please enter the grade for course"+(i+1)+":");
grade = input.nextLine();
value = grades.get(grade);
try{
sum += Double.valueOf(value);
}catch(Exception e){}
i++;

}
double gpa = sum/numb;
System.out.println("GPA = "+gpa);

问题是代码总是跳过用户对第一个条目的阅读。例如,如果我运行这个程序并输入类(class)数为 4,结果将如下所示:

Please enter number of courses:
4
Please enter the grade for course1:
Please enter the grade for course2:
A
Please enter the grade for course3:
A
Please enter the grade for course4:
A
GPA = 3.0

其实我不知道我犯的错误在哪里。当然,如果错过第一个条目的读数,就会导致 GPA 计算错误。拜托,有没有人有兴趣向我展示如何修复错误。我已经尝试了几乎所有我知道的方法,但仍然无法正常工作。仅供引用,这是我第一次用 Java 编程。提前谢谢你。

最佳答案

首先,您对 LinkedList 的实现不正确 linkedlist 不是键值类型的数据结构,它只是将元素链接到其他元素。我建议您查看更适合这种用法的 HashTable。当您使用 nextInt() 进行输入时,您的代码中发生的情况是不会消耗换行符。下面的代码应该可以解决问题

numb = Integer.parseInt(input.nextLine());

关于java - Java 中的符号表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32575769/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com