第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

制作一個(gè)循環(huán),在遇到冒號(hào)字符之前返回字符

制作一個(gè)循環(huán),在遇到冒號(hào)字符之前返回字符

每當(dāng)我運(yùn)行我的代碼時(shí),它都會(huì)返回此錯(cuò)誤消息:Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5    at java.lang.String.charAt(Unknown Source)    at codes.Main.main(Main.java:10)這是我的代碼:    package codes;public class Main {    public static void main(String[] args) {        String cord1 = "Name: x=23 y=60 z= 600";        String cord2 = "Name: x=200 y=20 z= 300";        int c1 = cord1.length();        String mychar = String.valueOf("cord1".charAt(0));        for (int a = 0; a < c1; a++){            mychar = String.valueOf("cord1".charAt(a));            if (mychar == ":"){                break;            }else{                cord1.substring(a);            }        }    }}
查看完整描述

3 回答

?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊

您的代碼中有很多錯(cuò)誤..

  1. mychar == ":"應(yīng)該是mychar.equals(":")。由于字符串是不可變的,我們需要使用.equals來(lái)比較它們而不是==(<- 這將檢查引用是否相等而不是字符串值)。

  2. "cord1".charAt應(yīng)該是你的變量cord1.charAt.. 通過(guò)使用"cord1"你基本上創(chuàng)建了一個(gè)新的 String 值cord1。

  3. cord1.substring(a);不改變cord1值,但返回一個(gè)新的字符串。所以你必須保存這個(gè)字符串結(jié)果,或者打印它,然后用break.

  4. 使用cord1 = cord1.substring(a)會(huì)縮短字符串本身。由于您仍然在原始字符串[0, c1)所在的范圍內(nèi)循環(huán)c1,我們?nèi)匀粫?huì)得到一個(gè) StringIndexOutOfBoundsException。相反,你不需要?jiǎng)e的情況,并同時(shí)需要cord1 = cord1.substring(a)break如果-包內(nèi)。(另外,我假設(shè)您也想刪除它:本身,因此您必須.substring(a+1)改用。)

  5. 另外,為什么要使用String.valueOf( char )而不是只使用char它們自己?不是真正的要求,但String.valueOf這里有點(diǎn)多余,并且使代碼的可讀性降低。

把它們放在一起:

public class Main {

    public static void main(String[] args) {

        String cord1 = "Name: x=23 y=60 z= 600";

        System.out.println("cord1 before:\t" + cord1);

        int c1 = cord1.length();

        char mychar = cord1.charAt(0);

        for (int a = 0; a < c1; a++){

            mychar = cord1.charAt(a);

            if (mychar == ':'){

                cord1 = cord1.substring(a+1);

                break;

            }

        }

        System.out.println("cord1 after:\t" + cord1);

    }

}

這將導(dǎo)致最終cord1具有值" x=23 y=60 z= 600"(注意前導(dǎo)空格)。

這是一個(gè)更簡(jiǎn)單的替代方案,結(jié)果相同:


String cord1 = "Name: x=23 y=60 z= 600";

String cord1ExcludingName = cord1.replaceFirst("^.*:","");


^       : Only look at the start of the String for:

 .*     : Zero or more of any character,

   :    : followed by a `:`

它將被替換為""(空字符串),因此它們基本上被刪除了。


查看完整回答
反對(duì) 回復(fù) 2021-09-03
?
慕少森

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊

String.valueOf("cord1".charAt(0)) 意味著您正在查看最高索引為 4 的字符串“cord1”的第 0 個(gè)字符,這就是為什么它在 5 處給出越界異常。

你必須做的是String.valueof(cord1.charAt(0))。這將考慮變量中的字符串cord1


查看完整回答
反對(duì) 回復(fù) 2021-09-03
?
開心每一天1111

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊

使用等于而不是“==”像這樣


 if (mychar.equals(":")){

            break;

您需要使用 equals 方法,因?yàn)槟谑褂米址C慨?dāng)您使用字符串時(shí),您必須將它們與方法 equals 進(jìn)行比較。如果你使用


char myChar = .....


你的代碼會(huì)起作用。你可以用“==”比較字符


查看完整回答
反對(duì) 回復(fù) 2021-09-03
  • 3 回答
  • 0 關(guān)注
  • 191 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)