2017-10-11 69 views
0

當您輸入NY或NYC時,代碼仍顯示錯誤。我相信這與我如何使用子字符串方法有關,但我無法弄清楚我的生活,任何幫助表示讚賞。在java中使用子串方法來拉字符並將它們匹配

import java.util.Scanner; 

public class Practice { 

    public static void main(String[] args){ 
     Scanner input = new Scanner(System.in); 
     System.out.print("Enter valid city initials: "); 
     String city = input.next(); 

     while (city.substring(0,1)!= ("NY") && (city.substring(0,2)!= ("NYC"))){ 
      System.out.println("Wrong City"); 
      System.out.println("Enter New York Citys Initials: "); 
      city = input.next(); 
     } 
    } 
} 

回答

0

我認爲問題在於事實,輸入NYC 行:

city.substring(0,1) //will return N 

和線

city.substring(0,2) //will return NY 
1

substring(int startIndex, int endIndex)方法返回從開始一個字符串的一部分startIndex(包含)並結束於endIndex(獨佔)。含義

city.substring(0, 1) 

只獲取字符串的第一個字符。

另外,您應該使用string.equals(Object other)方法比較字符串,而不是'=='運算符。 '=='運算符將檢查對象的引用是否相等,而equals()將檢查字符串的數據。例如,您可以檢查整個字符串是做等於什麼:

if (city.equals("NYC")) { 
    //Do something 
} 

編輯:我也看到你正在試圖獲得一個字符串的第三個字符。如果您嘗試使用2(或更少)字符輸入非「NY」的字符,它將返回一個StringIndexOutOfBoundsException,因此您還應該檢查輸入的長度並應用適當的操作。

+0

感謝這就是我正在尋找的,我忘了整個==難題 – Spaldingl

+0

@Spaldingl沒問題。祝你的節目順利。 – Charlie

相關問題