我对Java相当陌生,正在尝试构建一个“十大Java初学者项目”,更具体地说,是一个温度转换器。我的代码引发以下错误:
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
at TempConvert.convertToFar(TempConvert.java:78)
at TempConvert.main(TempConvert.java:15)
我最初使用scanner“*.nextDouble()”方法获取double,但将其更改为“parseDouble”方法,因为我认为这可能是问题所在。唉,这没有帮助。如果您能帮助解决此问题,我们将不胜感激!
public static double convertToFar()
{
Scanner in = new Scanner(System.in);
String userEntry;
double formula, userDouble;
System.out.print("Enter degrees in Celsius: ");
userEntry = in.nextLine();
userDouble = Double.parseDouble(userEntry);
in.close();
formula = (userDouble - 32) * (5/9);
return formula;
}
我认为,<代码>在。您编写的方法中的nextLine()最终与用户在关闭输入流之前输入的字符串发生冲突。我创建了一个Scanner对象并将其发送给这些方法,以便它们能够使用相同的对象。我只有在用户输入“E”后程序结束时才关闭它。这对我很有用:
import java.util.*;
public class TempConvert {
public static void main(String[] args)
{
double far, cel;
char userChoice;
Scanner in = new Scanner(System.in); // I added this line
userChoice = displayMenu(in);
while (userChoice != 'E')
{
if (userChoice == 'F')
{
far = convertToFar(in);
System.out.println("Converted: " + far + "\u00B0");
userChoice = displayMenu(in);
}
else if (userChoice == 'C')
{
cel = convertToCel(in);
System.out.println("Converted: " + cel + "\u00B0");
userChoice = displayMenu(in);
}
else
{
System.out.println("Invalid Entry");
userChoice = displayMenu(in);
}
}
in.close(); // closing the input stream when the program ends
}
public static void displayTitle()
{
String title = "||---- TEMPERATURE CONVERTER ----||";
String one = "-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-";
String two = "|| ** Auth: Arranic ||";
String three = "|| ||";
System.out.println(one + "\n" + three + "\n" + title + "\n" + three + "\n" + two + "\n" + three + "\n" + one);
}
public static char displayMenu(Scanner input)
{
ClearScreen();
displayTitle();
System.out.println("\n");
String choiceString;
char choice;
System.out.println("F - FARENHEIGHT C - CELSIUS E - EXIT");
System.out.print("CONVERT TO: ");
choiceString = input.nextLine();
// input.close() --> removed this line
choice = Character.toUpperCase(choiceString.charAt(0));
return choice;
}
public static void ClearScreen()
{
System.out.print("\033[H\033[2J");
System.out.flush();
}
public static double convertToCel(Scanner in)
{
String userEntry;
double formula, userDouble;
System.out.print("Enter degrees in Fahrenheit: ");
userEntry = in.nextLine();
// in.close() --> removed this line
userDouble = Double.parseDouble(userEntry);
formula = (userDouble - 32) * (5.0/9);
return formula;
}
public static double convertToFar(Scanner in)
{
String userEntry;
double userDouble, formula;
System.out.print("Enter degrees in Celsius: ");
userEntry = in.nextLine();
// in.close() --> removed this line
userDouble = Double.parseDouble(userEntry);
formula = (userDouble * (9.0/5)) + 32;
return formula;
}
}
顺便说一句,你的计算并不精确。你应该记住整数/整数=整数。也就是说,写5/9或9/5是不准确的,因为结果是一个整数类型的数字,而不是我假设你想得到的双类型的数字。(5/9 = 0, 9/5 = 1)所以你应该在计算中添加5.0或9.0,这样Java就会明白你想得到双类型的结果(双/int=双)。还有一件事,你的计算放错了地方(华氏度到摄氏度给了我相反的结果,反之亦然),所以我把它们换了起来;)。
当用户在扫描器中输入任何整数时,我试图捕捉一个异常。我理解使用字符串item=scan。nextLine()将允许进行任何输入,包括整数。我创建了一个自定义异常来捕捉数字1。但是如果用户输入999或任何其他整数会发生什么呢。我如何捕获这些其他整数作为异常的一部分? import java.util.Scanner;import java.lang.Exception; 公共类示例一{ } 公共类T
问题内容: 我上课要打针 但是没有实现IMyInterface的类。如何使spring注入无效而不是抛出,因为我不一定需要存在它? 问题答案: 使用(假设是),我认为没有直接的方法可以使绑定成为可选。但是,如果使用,则可以将其属性设置为:
问题内容: 为什么list.index会引发异常,而不是使用任意值(例如)?这背后的想法是什么? 对我来说,处理特殊值而不是例外看起来更干净。 编辑 :我没有意识到这是一个潜在的有效值。然而,为什么不别的呢?无值如何? 问题答案: 因为本身就是有效的索引。它可以使用一个不同的值,例如,但在其他情况下(因此)可能没有用,并且仅相当于错误检查,这正是异常处理的目的。
下面是我生成PDF的代码: 下面是我用来绘制多个字符串的代码: 此代码正常工作,但如果我将更改为,它将引发以下异常: 起初,我认为这是因为有些数据不存在,无法编写,但如果我不更新Voly,它就可以正常工作。然后我认为这是一个问题,当创建了一个新页面但流存在时,没有创建PDPageContentStream。 提前感谢您的帮助!
想象一下下面的scanario:我有一个程序,它要求输入一个整数,然后是一个String输入。 根据aobe代码,我没有机会输入姓名。因此,通常我会声明2个扫描仪对象,如下所示: 我的问题是:有必要声明多个扫描仪对象来接受不同类型的输入吗??我这样做是正确的吗? 我已经考虑这个问题很多年了。(SO中的几个问题提到了多扫描仪,但他们的问题只使用了一个扫描仪对象,所以我今天问这个问题。)
有人能给我解释一下原因吗?