Java 将方法调用到主方法中
我知道这应该很简单,但我似乎找不到我的错误,我知道这是一个运行时错误,因为当我运行程序时,它启动时会询问您要做什么转换,然后输入数字,然后出现错误。我们在课堂上不经常解决问题,但是。。。。。我试过几种不同的方法,包括Java 将方法调用到主方法中,java,methods,Java,Methods,我知道这应该很简单,但我似乎找不到我的错误,我知道这是一个运行时错误,因为当我运行程序时,它启动时会询问您要做什么转换,然后输入数字,然后出现错误。我们在课堂上不经常解决问题,但是。。。。。我试过几种不同的方法,包括 public static double hourstominutes(){ double minutes, hours; Scanner input = new Scanner (System.in); System.out.println ("Ente
public static double hourstominutes(){
double minutes, hours;
Scanner input = new Scanner (System.in);
System.out.println ("Enter number of hours: ");
hours = input.nextInt();
input.close();
minutes = (double)hours * (double)60;
return minutes;
}
但这不起作用,我想这会让情况变得更糟,因为我不得不改变一大堆其他的台词
import java.util.Scanner;
public class TimeConverter{
public static void hourstominutes(){
double minutes, hours;
Scanner input = new Scanner (System.in);
System.out.println ("Enter number of hours: ");
hours = input.nextDouble();
input.close();
minutes = (double)hours * (double)60;
System.out.println("There are " + minutes + " minutes in " + hours + " hour(s");
}
public static void minutestohours(){
double minutes, hours;
Scanner input = new Scanner (System.in);
System.out.println ("Enter number of minutes: ");
minutes = input.nextDouble();
input.close();
hours = (double)minutes / (double)60;
System.out.println("There are " + hours + " hours in " + minutes + " minutes");
}
public static void daystohours(){
double days, hours;
Scanner input = new Scanner (System.in);
System.out.println("Enter number of day: ");
days = input.nextDouble();
input.close();
hours = (double)days * (double)24;
System.out.println("there are " + hours + " hours in " + days + "days");
}
public static void hourstodays(){
double days;
double hours;
Scanner input = new Scanner (System.in);
System.out.println("Enter hours of day: ");
hours = input.nextDouble();
input.close();
days = (double)hours / (double)24;
System.out.println(days);
}
public static void main (String [] args){
int option;
Scanner input = new Scanner (System.in);
System.out.println ("Please which conversion you would like to perform");
System.out.println ("1. hours to minutes ");
System.out.println ("2. minutes to hours");
System.out.println ("3. days to hours");
System.out.println ("4. hours to days");
option = input.nextInt();
input.close();
if (option == 1){
{hourstominutes();}
}else if (option == 2){
minutestohours();
}else if (option == 3){
daystohours();
}else if (option == 4){
hourstodays();
}else {
System.out.println("That is not a choice, enter a numerical value");
}
}
}
我知道这是我的家庭作业,人们说不要发布hw,但我把整个事情都搞错了,我不知道该找什么
提前感谢Stack over flow系列的帮助我想这是因为当您关闭输入对象时,您也会关闭
系统。当您使用System.in
再次新建扫描仪对象时,您将得到java.util.NoTouchElementException
。
如果使用静态扫描对象并在程序的最后关闭它,效果会更好。
希望这能对您有所帮助。我已经测试过了,它可以正常工作
两件事
1:
尽量不要让你的方法都是静态的,我知道这要求你这么做,因为你不能从静态的main调用一个非静态的方法,但这意味着你应该实例化你的类,并使用对象来访问这些方法
2:
Scanner类使用内部缓冲区。在Factory类中创建扫描仪对象。此扫描程序将底层FileInputStream读取到自己的缓冲区中。
第一个扫描程序已使用该FileInputStream中的所有内容
快速修复方法是使用相同的scanner对象(即,由于所有方法都使用scanner,因此在类范围中定义scanner:
Scanner input;
...
...
public static void main (String [] args){
input = new Scanner (System.in);
...
...
然后使用所有方法的输入,这将解决您的问题。
但请记住,不要仅仅因为eclipse要求,就将所有方法都设置为静态。
实例化该类
祝你好运,伙计:)
提示:
尝试在赋值中使用,然后使用switch语句将字符串解析为双精度字符串,选择时使用
选择=输入。文本
开关(选择)
{
案例“1”:
小时();
中断
等
违约
某物();
打破
}如果您能发布错误,那就太好了。如果您遇到错误或异常,请完整发布。确切地说,您能提供的相关信息越多,我们就越能理解问题。错误信息应该是一个明显的必要信息,不是吗?