2015-06-20 32 views
3

輸入: -通過使用數組和字符串沒有得到我想要在java中的結果?

agxgw 
3 
2 4 
2 5 
7 14 

輸出: -

Yes 
No 
Yes 

我只是用「是」或「否」使用下面的規則回答:我會只選擇兩個整數a和b,如果位置a處的元素與處於非終止詠歎聲中位置b處的元素相同。答案是,說,否則號

代碼:

import java.util.Scanner; 

public class Gf { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Scanner sc = new Scanner(System.in);   
     String k=sc.next(); 
     int k1=k.length(); 
     int a=sc.nextInt(); 
     for (int i =0; i <a; i++) { 
      int b=sc.nextInt(); 
      int b1=b%k1; 
      int c=sc.nextInt(); 
      int c1=c%k1; 
      if(k.charAt(b1)==k.charAt(c1)) { 
       System.out.println("yes"); 
      } else { 
       System.out.println("No"); 
      } 
     } 
    } 
} 

回答

0

一旦你得到char b1和c1。 那麼你只需要找到字符串k =「agxgw」中天氣字符在位置b1和c1是否相同。現在字符串k很小,但整數b1和c1可以大於它的長度。

因此,只需計算字符串長度b1和c1的mod,然後比較字符是否相同。

例如:

模可以用%運算來計算。

m1 = b1 % stringlength of k 
m2 = c1 % stringlength ok k 

現在焦炭M1和M2是大於k 的stringlength小,所以只比較如果兩者相同與否。

+0

OP的已經這樣做。 –

2

String#charAt是從零開始的索引,並在b1c1值假設它是基於一個指數。

解決方法:在評估k#charAt之前減少b1c1。只有在它們的值大於零時才這樣做。

int b=sc.nextInt(); 
int b1=b%k1; 
int c=sc.nextInt(); 
int c1=c%k1; 
b1 = b1 == 0 ? k1 - 1 : b1 - 1; 
c1 = c1 == 0 ? k1 - 1 : c1 - 1; 
+0

謝謝@Luiggi。現在它正在工作 – ansh

0

你可以重寫你的代碼的一部分這樣的:

int b = sc.nextInt() - 1; 
int b1 = b % k1; 
int c = sc.nextInt() - 1; 
int c1 = c % k1; 

的原因是,Java的數組的索引以零開始。

相關問題