有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java返回值不符合预期

我是新的Java程序员。我正在写一个简单的程序来计算矩形的面积。您可以输入矩形的宽度和高度,但问题是无论我输入什么值,面积值总是返回零。如何解决此问题。请看一下我的cde

import java.util.Scanner;
public class Shape {
    private int area;
    private int width;
    private int length;
    private String name;

    public String shapeName() {
     Scanner scanner = new Scanner(System.in);
     System.out.print("Enter shape name: ");
     String name = scanner.nextLine();
     return name;
    }

    public int area() {
     Scanner scanner = new Scanner(System.in);
     System.out.print("Enter width: ");
     String width = scanner.nextLine();  
     System.out.print("Enter height: ");
     String height = scanner.nextLine();
     return this.width * this.length;       
    }
}
public class Example1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Shape shape = new Shape();
        System.out.println("Shape is " + shape.shapeName());
        System.out.println("It's area is " + shape.area());
    }
}

谢谢。。。祝你今天愉快!:)


共 (6) 个答案

  1. # 1 楼答案

         String width = scanner.nextLine();  
         System.out.print("Enter height: ");
         String height = scanner.nextLine();
         return this.width * this.length;       
        }
    

    在这里,您将宽度放在两个局部变量中,并返回属性width和height的mul,这两个变量是不同的。试一试

    this.width = scanner.nextInt();
    System.out.print("Enter height: ");
    this.height = scanner.nextInt();
    return this.width * this.length;  
    
  2. # 2 楼答案

    这会解决你的问题,兄弟

    public int area() {
         Scanner scanner = new Scanner(System.in);
         System.out.print("Enter width: ");
         int width = Integer.parseInt(scanner.nextLine());
         this.width = width;  
         System.out.print("Enter height: ");
         int height = Integer.parseInt(scanner.nextLine());
         this.height = height;
         return this.width * this.length;       
        }
    
  3. # 3 楼答案

    您的问题是没有将输入分配给类变量:

    private int width;
    private int length;
    

    但是对于您的方法,局部变量是String widthString length

    因此return this.width * this.length;行将返回0,因为this.widththis.length都没有更改,所以它们是0,因为在Java中int默认初始化为0

    您应该将输入分配给类变量

     public int area() {
          Scanner scanner = new Scanner(System.in);
          System.out.print("Enter width: ");
          width = scanner.nextInt();  
          System.out.print("Enter height: ");
          length = scanner.nextInt();
          return width * length;       
    }
    

    注意:

    使用Scanner.nextInt()获取int值,而不是返回StringScanner.nextLine(),否则应将这些字符串解析回int

  4. # 4 楼答案

    在课堂上做这样的动作

    您需要使用这个关键字初始化全局变量宽度长度

    class Shape {
    private int area;
    private int width;
    private int length;
    private String name;
    
    public String shapeName() {
     Scanner scanner = new Scanner(System.in);
     System.out.print("Enter shape name: ");
     String name = scanner.nextLine();
     return name;
    }
    
    public int area() {
     Scanner scanner = new Scanner(System.in);
     System.out.print("Enter width: ");
     int width = scanner.nextInt();  
     System.out.print("Enter lengtht: ");
     int length = scanner.nextInt();
     this.width = width;
     this.length=length;
     return this.width * this.length;       
    }
    }
    
  5. # 5 楼答案

    将值赋给局部新变量意味着

    这个。宽度和这个。未使用长度,因此返回0

    public int area() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter width: ");
        this.width = scanner.nextInt();  
        System.out.print("Enter height: ");
        this.height = scanner.nextInt();
        return this.width * this.length;       
    }
    
  6. # 6 楼答案

    也可以使用此代码

    public double area(){
         Scanner scanner = new Scanner(System.in);
         System.out.print("Enter width: ");
         int width = scanner.nextInt();  
         System.out.print("Enter height: ");
         int height = scanner.nextInt();
          double d=width*height;
         return d;       
        }