2017-05-25 66 views
1

我是新的Java程序员。我正在编写简单的程序来计算矩形的面积。您可以输入矩形的宽度和高度,但问题是我输入的任何值,面积值总是返回零。我该如何解决这个问题。请看看我的CD。Java返回值与预期不符

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()); 
    } 
} 

谢谢...祝您有美好的一天! :)

回答

2

你的问题是,你不分配输入到你的类变量:

private int width; 
private int length; 

但你方法的局部变量String widthString length

所以,因为这两个this.widththis.length没有改变所以他们0因为在Java int是默认初始化为0return this.width * this.length;将返回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值,而不是Scanner.nextLine()这将返回一个String,否则你应该分析这些字符串回int

+2

讲出了我的嘴:) –

+0

@arcee的 - 你将需要输入从字符串转换为长。 Long.parseLong(inputString)应该这样做。 –

+1

这个网站有很多忍者 –

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

这里您将宽度放在两个局部变量中,并返回属性宽度和高度的多个不同变量。试着用

this.width = scanner.nextInt(); 
System.out.print("Enter height: "); 
this.height = scanner.nextInt(); 
return this.width * this.length; 
0

将价值分配到当地的新变量手段,

this.width和this.length未使用,因此返回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;  
} 
+3

这不起作用,因为scanner.nextLine();返回一个字符串,宽度为int。使用scanner.nextInt() –

+0

已更改,感谢您的评论。 – PSo

0

做这样的事情在类shape 。

您需要使用关键字

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;  
} 
} 
0

这应该可以解决你的问题,兄弟初始化的全局变量宽度长度

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;  
    } 
0

使用此代码也

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;  
    }