2012-02-19 55 views
0

我目前正在制作一个小程序来教我一些新的Java,而我被卡住了。我正在制作的节目,你进入一个预先设定的位置,它会给你多少距离的jist。除了我想添加两个+字位置,除了每当我输入它时,它都会直接到else语句,而不是给jist。我的代码如下。不读两个字输入

import java.util.*; 

public class Distance { 
    String _destination; 
    public Distance() { 
    Scanner scan = new Scanner(System.in); 
     System.out.println("Where do you want to go?"); 
      _destination = scan.next(); 

     if(getDistance() >= 2000) { 
      System.out.println("F*cking woop c*nt"); 
     } else if(getDistance() >= 500) { 
      System.out.println("F*cking far c*nt"); 
     } else if(getDistance() < 0) { 
      System.out.println("What are you? Retarded?"); 
     } else if(getDistance().equals("0") { 
      System.out.println("Why bother?"); 
     } else { 
      System.out.println("Walk it c*nt"); 
     } 
    } 

    public int getDistance() { 
    int distance = 0; 
     if(_destination.equalsIgnoreCase("Ellenbrook")) { 
      distance = 1200; 
     } else if(_destination.equalsIgnoreCase("Midland")) { 
      distance = 900; 
     } else if(_destination.equalsIgnoreCase("Perth")) { 
      distance = 200; 
     } else if(_destination.equalsIgnoreCase("Woop Woop")) { 
      distance = 2100; 
     } else if(_destination.equalsIgnoreCase("High Wycombe")) { 
      distance = -2; 
     } 

     return distance; 
    } 

    public static void main(String[] args) { 
     new Distance(); 
    } 
} 
+1

你getDistance的()方法返回INT,但如果(getDistance的()等于(”你用别的。 0)))在你的构造函数 - 尝试其他如果(getDistance()== 0)(当然,这不能解决你的扫描问题) – 2012-02-19 10:28:49

+0

我做了其他if(String.valueOf(getDistance())。equals(“0 “){},因为我一直得到一个derefenced int错误。 – 2012-02-19 10:31:42

回答

2

默认情况下,扫描仪对空格字符进行标记,因此您对下一个字段的调用只返回一个字。您需要将扫描仪更改为使用换行符进行标记化,或者使用BufferedReader(和readLine方法)来取代您的输入。

+0

完美地工作。谢谢你队友! – 2012-02-19 10:30:00

3

您需要使用scan.nextLine()得到一个字符串作为输入,因为我已经提到如下:

import java.util.*; 
public class Distance { 
    String _destination; 
    public Distance() { 
    Scanner scan = new Scanner(System.in); 
     System.out.println("Where do you want to go?"); 
      _destination = scan.nextLine(); 

     if(getDistance() >= 2000) { 
      System.out.println("F*cking woop c*nt"); 
     } else if(getDistance() >= 500) { 
      System.out.println("F*cking far c*nt"); 
     } else if(getDistance() < 0) { 
      System.out.println("What are you? Retarded?"); 
     } else if(getDistance()==0) { 
      System.out.println("Why bother?"); 
     } else { 
      System.out.println("Walk it c*nt"); 
     } 
    } 

    public int getDistance() { 
    int distance = 0; 
     if(_destination.equalsIgnoreCase("Ellenbrook")) { 
      distance = 1200; 
     } else if(_destination.equalsIgnoreCase("Midland")) { 
      distance = 900; 
     } else if(_destination.equalsIgnoreCase("Perth")) { 
      distance = 200; 
     } else if(_destination.equalsIgnoreCase("Woop Woop")) { 
      distance = 2100; 
     } else if(_destination.equalsIgnoreCase("High Wycombe")) { 
      distance = -2; 
     } 

     return distance; 
    } 

    public static void main(String[] args) { 
     new Distance(); 
    } 
}