Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将方法调用到主方法中_Java_Methods - Fatal编程技术网

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”: 小时(); 中断

违约 某物(); 打破
}

如果您能发布错误,那就太好了。如果您遇到错误或异常,请完整发布。确切地说,您能提供的相关信息越多,我们就越能理解问题。错误信息应该是一个明显的必要信息,不是吗?