当前位置: 首页 > 知识库问答 >
问题:

引用数组引发与扫描仪相关的错误

高锦
2023-03-14

下面是有问题的代码:

 public class GradeBookRunner
 {
 public static void main( String args[] )
  {
    out.println("Welcome to the Class Stats program!");
    int num = 1;
    int count = 0;
    String stuGrades = "";
    String stuName = "";
    Scanner keyboard = new Scanner(System.in);
    out.print("What is the name of this class? ");
    String clsName = keyboard.nextLine();
    out.println("\n");
    out.print("How many students are in this class? ");
    int clsNum = keyboard.nextInt();
    Class CSAB = new Class(clsName, clsNum);
    out.println("\n");
    out.print("Enter the name of student 1 : ");
    stuName = keyboard.nextLine();
    keyboard.next();
    out.print("Enter the grades for " + stuName + "\nUse the format x - grades ( 2 - 100 100) : ");
    //count = keyboard.nextInt();
    //keyboard.next();
    //for(int i = 0; i < count; i++)
    //{
        stuGrades += keyboard.nextLine() + " ";
    //}

    Student add = new Student(stuName,stuGrades);
    CSAB.addStudent(num, add);
    stuGrades = "";
    num++;
    out.println();

可在以下链接中找到该类的代码:

Grades.java:http://pastebin.com/ahYRS2WD

Student.java:http://pastebin.com/EBF4BBCb

班爪哇:http://pastebin.com/A1C9fCL1

我的问题发生在我运行代码并输入了班级名称、班级规模、学生姓名之后,这些都很好,当我输入学生的成绩时,这下一位给我带来了一个错误,例如3-70.2 65.3 45.1

编辑下面是我得到的错误:

欢迎来到班级统计计划!这个班的名字是什么?美联社

这个班有多少学生?1.

输入学生的姓名1:1

请输入成绩以供参考

在线程“main”中使用格式x-grades(2-100):Exception

java.util.NoSuchElementExcema

at java.util.Scanner.throwFor(Unknown Source)

at java.util.Scanner.next(Unknown Source)

at java.util.Scanner.nextInt(Unknown Source)

at java.util.Scanner.nextInt(Unknown Source)

at lab19b.Grades.setGrades(Grades.java:31)

at lab19b.Grades.<init>(Grades.java:25)

at lab19b.Student.<init>(Student.java:27)

at lab19b.GradeBookRunner.main(GradeBookRunner.java:42)

编辑2

我现在想的问题是,我需要stuGrades读取整行内容,比如3-70.2 65.3 45.1,但我无法确定需要将键盘输入放入字符串的扫描语句

编辑3

这是一个正常工作的grades.java的证据:

package lab19b;

import java.util.Arrays;
import java.util.Scanner;
import static java.lang.System.*;
import static java.util.Arrays.*;

 public class GradesTester
 {
public static void main( String args[] )
 {
    Grades test = new Grades("5 - 90 85 95.5 77.5 88");
    out.println(test);
    out.println("sum = " + test.getSum());  
    out.println("num grades = " + test.getNumGrades());                                         
    out.println("low grade = " + test.getLowGrade());       
    out.println("high grade = " + test.getHighGrade()+ "\n\n");

    test.setGrades("9 - 10 70 90 92.5 85 95.5 77.5 88 100.0");
    out.println(test);
    out.println("sum = " + test.getSum());  
    out.println("num grades = " + test.getNumGrades());                                         
    out.println("low grade = " + test.getLowGrade());       
    out.println("high grade = " + test.getHighGrade());

输出如下:90.0 85.0 95.5 77.5 88.0

总和=436.0

等级数=5

低等级=77.5

高等级=95.5

10.0 70.0 90.0 92.5 85.0 95.5 77.5 88.0 100.0

总和=708.5

等级数=9

低等级=10.0

高等级=100.0

共有1个答案

杜诚
2023-03-14

您的问题在于Grades第27行中的public voidsetGrades(String gradeslist)函数,这意味着整个gradeslist类似于“a b c”。将其转换为数组函数并读取单个字符串。[a] ,[b],[c]。使用字符串的split函数形成一个数组,并填充您的grades[i]

Scanner中的此方法导致了问题,这意味着在扫描后没有要解析的输入。nextInt()

 // If we are at the end of input then NoSuchElement;
  903     // If there is still input left then InputMismatch
  904     private void throwFor() {
  905         skipped = false;
  906         if ((sourceClosed) && (position == buf.limit()))
  907             throw new NoSuchElementException();
  908         else
  909             throw new InputMismatchException();
  910     }

 类似资料:
  • 下面的代码显示了一个错误。我对编码很陌生。这东西弄乱了我的脑袋。我能做什么? 下面的代码在编辑之后。但它仍然显示出NoSuchElementFound异常的相同错误。

  • 问题内容: 我正在用Java从头开始编写RPG战斗系统,雄心勃勃吧?好吧,我遇到了麻烦。这是我的代码: 当它到达代码中的这一点时,我得到: 你会怎么做?说(战斗)(运行)(使用项) 线程“主”中的异常java.util.NoSuchElementException: 在Combat.turnChoice(Combat.java:23)的 java.util.Scanner.nextLine(Unk

  • 位于java.util.scanner.throwfor(未知源)位于java.util.scanner.next(未知源)的线程“main”java.util.NoSuchelementException中出现异常**** 我多次调用s(扫描器),在第二次调用时出现运行时错误。这是由于关闭扫描仪,并可能再次使用它。我的问题是,每次使用Scanner时,我都会创建一个新的Scanner实例,那么为

  • 对于作业,我必须编写以下代码: 当我尝试编译它时,它在命令提示符下给了我3个错误,说“无法解析符号,符号:类扫描仪,位置:类单词,扫描仪用户输入=新扫描仪(System.in)”。我不确定错误在哪里。我应该使用BufferedReader作为输入吗?

  • 我们对此任务有一些指导方针:1。使用scanner(scanner scanner=new scanner(system.in);)2。使用方法scanner.nextline() 我们必须一步一步地构建一个游戏(Mastermind),我总是在使用nextInt()和switchcase(用于输入不是int的东西)时出错(BlueJ)顺便说一句:我们不应该使用nextint-我们应该使用next