2016-05-04 18 views
0

右です。だから、.substringを使って最後の文字を取得しようとしました。たとえば、 "100C"と入力すると正しく動作し、変数celOrFarは "C"になります。しかし、ユーザーは数字の後にスペースを挿入することになっていますが、そうすると誤った結果になります。 "100 C"はCの代わりに "0"を与え、 "1234 5678C"は私に4を与えるでしょう!私はまだJavaの初心者ですので、どんな助けもありがとう!空白を含む文字列の最後の文字を取得しようとしています。

public static void stateOfWater() {  

    System.out.println("Enter a temperature followed by a space and C/F: "); 
    String userInput = input.next(); 
    String celOrFar = userInput.substring(userInput.length()-1); 

    String degreeString = userInput.trim(); 
    degreeString = degreeString.replace("C", ""); 
    degreeString = degreeString.replace("F", ""); 
    degreeString = degreeString.replace("f", ""); 
    degreeString = degreeString.replace("c", ""); 

    int degree = Integer.parseInt(degreeString);  

    if (celOrFar.equals("C")|| celOrFar.equals("c")) {   
     if (degree <= 0) {System.out.println("Your water is a solid at " +userInput);}   
     if (degree >= 100) {System.out.println("Your water is a gas at " +userInput);}  
     if (degree >0 && degree <100) {System.out.println("Your water is a liquid at " +userInput);}    
    } 

    if (celOrFar.equals("F") || celOrFar.equals("f")) {   
     if (degree <= 32) {System.out.println("Your water is a solid at " +userInput);}   
     if (degree >= 212) {System.out.println("Your water is a gas at " +userInput);}   
     if (degree >32 && degree <212) {System.out.println("Your water is a liquid at " +userInput);}   
    } 
} 
+0

スキャナのスペースをセパレータとして使用するには、[doc](https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html) –

答えて

0

scanner.nextそれはスペースに遭遇するまで、文字を読んで。スペースを含む完全な行を読みたい場合は、nextLineを使用する必要があります。下記参照。

public static void stateOfWater() {  

System.out.println("Enter a temperature followed by a space and C/F: "); 
String userInput = input.nextLine(); // this will read the complete line including spaces. 
String celOrFar = userInput.substring(userInput.length()-1); 

String degreeString = userInput.trim(); 
degreeString = degreeString.replace("C", ""); 
degreeString = degreeString.replace("F", ""); 
degreeString = degreeString.replace("f", ""); 
degreeString = degreeString.replace("c", ""); 

int degree = Integer.parseInt(degreeString);  

if (celOrFar.equals("C")|| celOrFar.equals("c")) {   
    if (degree <= 0) {System.out.println("Your water is a solid at " +userInput);}   
    if (degree >= 100) {System.out.println("Your water is a gas at " +userInput);}  
    if (degree >0 && degree <100) {System.out.println("Your water is a liquid at " +userInput);}    
} 

if (celOrFar.equals("F") || celOrFar.equals("f")) {   
    if (degree <= 32) {System.out.println("Your water is a solid at " +userInput);}   
    if (degree >= 212) {System.out.println("Your water is a gas at " +userInput);}   
    if (degree >32 && degree <212) {System.out.println("Your water is a liquid at " +userInput);}   
    } 
} 
関連する問題