亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

string indexOf(int ch) 為什么我的返回值總是-1

package?test;

public?class?Test?{

	public?static?void?main(String[]?args)?{
		//?TODO?Auto-generated?method?stub
		String?s?=?"sdsds5dsjdghsl";
		int?ch?=?5;
		System.out.println(s.indexOf(ch));
	}
}

http://img1.sycdn.imooc.com//58430a6200011f8c08020342.jpg

正在回答

5 回答

返回-1表示沒有找到,你定義的ch是int型,indexof括號里的int值是對應字符的ascii碼的值,而字符串里沒有,所以返回-1

1 回復 有任何疑惑可以回復我~

Q】為什么indexOf(int ch)方法中的參數是整形的,而在用的時候卻是char型的如

public class Test
{
public static void main(String[] args){

String s1=new String("hello");

System.out.println(s1.indexOf('e'))
}

【K】
首先int類型32個位(1個符號位+31個數值位) char類型16個位(16個數值位)
char data = 97;這樣的賦值是沒有錯誤的 這是用ascii編碼來給char賦值?
Java當中 一個較小數據類型是直接可以賦值給大數據類型的而且在參數傳遞的時候同理,你可以寫這樣一行代碼:
int data = 'a'; //或者:
char c = 'e'
?所以Java當中在參數匹配的時候是可以用char類型參數匹配int類型參數的定義的
s1.indexOf('e')等價于s1.indexOf(101) 在這里用e的ASCII編碼來匹配int類型參數


在Java中,查閱API,還有重載函數 int indexOf(String str):
所以哪怕你是s1.indexOf(“e”)都不會有問題。


1 回復 有任何疑惑可以回復我~

int ch = '5';

0 回復 有任何疑惑可以回復我~

查找的是字符,每個字符是有對應的ascii碼值的。

0 回復 有任何疑惑可以回復我~

s.indexOf(5)表示s字符串里ascii值為5的字符出現的位置,但是首先ascii=5對應的并不是一個字符,它在s中顯然沒有出現,當找不到所查字符串時,返回-1。

indexOf()的正常使用方法是indexOf(String,int),返回String字符串在對象中從左往右數,從int位置開始的下一個出現位置的值,int的缺省值為0。


1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

string indexOf(int ch) 為什么我的返回值總是-1

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號