我正在学习以 Java 为语言的介绍性编程课程。我们正在处理的任务正在困扰着我。我有一个while循环要求输入数值,当输入字符串值时终止,即while (sc.hasNextDouble()){...}接下来是另一个扫描仪输入,它使用if (sc.hasNextLine())问题是我使用一个字符串来终止顶部的while循环,然后扫描仪立即使用它。我尝试对带有显式中断的顶部循环使用 if/else 语句;声明,但这不起作用。无论我做什么,它仍然在传递。我应该如何处理这个问题?任何指针表示赞赏。编辑:根据要求,这里是一些实际的代码。请记住,这是针对任意类分配的,因此可能没有多大意义。 //Request user input System.out.print("Please enter multiple double values. Enter q or any non double value to quit."); double doubleValue = 0.00; //declare doubleValue variable (for each entered double value) double sum = 0.00; //declare starting sum value variable at 0.00 double doubleAverage = 0.00; //declare average of doubles variable //declare largest double value variable as MIN_VALUE to ensure any entered value is larger double largestDouble = Double.MIN_VALUE; //declare smallest double value variable as MAX_VALUE to ensure any entered value is smaller double smallestDouble = Double.MAX_VALUE; //declare smallest double value variable int count = 0; //set starting count while (sc.hasNextDouble()) { doubleValue = sc.nextDouble(); //System.out.print("Please enter another double value. Enter -1 to stop entering values."); sum = sum + doubleValue; count++; } /* * This section prompts the user for their first name and printd it in reverse. */ System.out.print("Please enter your first name:"); String fName = ""; //declare fName variable before requesting input if (sc.hasNext()) { fName = sc.next();…在此之后,字符串值用于终止我最后用于 if 语句的 while 循环。
3 回答
三国纷争
TA贡献1804条经验 获得超7个赞
我的讲师提供的另一个有效选项是使用虚拟变量来使用 Scanner 输入,例如:
String fName = sc.next(); // Consume the Q or q here
.
慕娘9325324
TA贡献1783条经验 获得超4个赞
不从sc
扫描仪传递数据的一种方法是创建一个新的扫描仪对象。让我们称之为一个scan
。这样,当您引用scan
它时,将不知道sc
之前输入的扫描仪。
在您的if
陈述中,您会提到scan
扫描仪而不是sc
扫描仪。
数据从while
循环传递到您的if
语句的原因是因为它们都引用了同一个对象,并且在您调用sc.hasNext()
它时读取了您输入到控制台的最后一个内容。
添加回答
举报
0/150
提交
取消