【问题标题】:methods in Java will not work?Java中的方法不起作用?
【发布时间】:2015-04-10 04:37:44
【问题描述】:

所以我在课堂上学习 Java,到目前为止我真的很喜欢它,但有时它真的很难理解。现在我正试图了解方法是如何工作的。我的问题是为什么我的代码不起作用。我正在尝试从用户输入中读取一个整数,然后对其进行平方。

这是我的代码:

package freetime;

import java.util.Scanner;

public class methods {

    public static void main(String []args){
        Scanner input = new Scanner(System.in);
        System.out.println( " enter a number ");
        int number = input.nextInt();
        square(number);
    }

    public static int square(int number){
        int num;
        num = number * number;
        return (num);
    }
}

假设我在控制台输入 5,程序立即终止,我不知道为什么。

【问题讨论】:

  • square() 方法返回的值会发生什么变化?你没有打印它。
  • 我认为它实际上在工作 :-) 你正在从控制台读取一个数字,找到该数字的平方,但你没有对结果做任何有用的事情,所以对你的结果做一个 println在你的主要方法中:-)
  • main 函数中 square(number) 方法后没有语句,因此程序立即终止。
  • 你没有使用方法的返回值。所以你不知道发生了什么

标签: java oop methods


【解决方案1】:

正如其他人所提到的,您不打印该值,并且控制台将在程序结束后立即关闭。所以你可以尝试这样的事情

public class ScannerTest {
    public static void main(String []args){
        while(true){
            Scanner input = new Scanner(System.in);
            System.out.println( " enter a number (-1 to stop)");
            int number = input.nextInt();
            if(number == -1){
                break;
            }
            int output = square(number);
            System.out.println(output); 
        }
    }

    public static int square(int number){
        int num;
        num = number * number;
        return (num);
    }
}

只要您不停止程序,这将打印结果并循环请求新的输入。

【讨论】:

  • 我很困惑,因为这个解决方案似乎没有使用第二种方法。
  • 我进行了编辑以使各个步骤可见...无论您将 square(number) 的结果分配给输出并打印输出还是直接打印 square(number) 都没有任何区别。
【解决方案2】:

在 Java 中,当 main 方法结束并且没有任何非守护线程在运行时,JVM 结束。您的程序结束,没有打印出square() 调用的结果。

【讨论】:

    【解决方案3】:
    /*here is your solution :*/
    
    
    
    import java.util.*;
    import java.lang.*;
    import java.io.*;
    
    /*in java everything has to be in a class */
    class SquareNumber
    {
        public static void main (String[] args) throws java.lang.Exception
        {
        Scanner input = new Scanner(System.in);
        System.out.println( " enter a number ");
        int number = input.nextInt();
        System.out.println(square(number));
     /*something to print the squared number*/
        }
    
        public static int square(int number){
        int num;
        num = number * number;
        return (num);
    }
    }
    

    【讨论】:

      【解决方案4】:

      您的程序被终止,因为在square(number); 语句之后没有其他语句。所以你的程序执行square(...) 方法,然后它发现主函数结束,所以程序终止。要查看某些输出,您必须打印 square(...) 方法的结果。

      package freetime; 
      import java.util.Scanner; 
      public class methods {
      
      public static void main(String []args){
          Scanner input = new Scanner(System.in);
          System.out.println( " enter a number ");
          int number = input.nextInt();
      
          int result=square(number);//executing square(...) method and store the returned value of square method to result variable 
          System.out.println("Square of "+number+" is : "+ result);//printing result 
      
      }
      
      public static int square(int number){
          int num;
          num = number * number;
          return (num);
      
      
      }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-09
        • 2016-04-15
        • 2011-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多