簡體   English   中英

Java 無法識別空格后的特殊字符

[英]Java unable to recognise special character after space

我必須為以下問題編寫一個程序:

在此處輸入圖像描述

我寫了以下代碼:

package secret_message;
import java.util.Scanner;
public class Secret_Message {
    public static void main(String[] args) {
        Scanner sc = new Scanner (System.in);
        int lines, i, codenumber, k;
        String code, codepart, codechar2;
        char codecharacter1, codecharacter2;
        lines = sc.nextInt();
        codepart = "";
        for (i = 1; i<=lines; i++)
        {
            code = sc.next();
            codecharacter1 = code.charAt(0);
            codecharacter2 = code.charAt(1);
            codenumber = Character.getNumericValue(codecharacter1);
            for (k=1; k<=codenumber; k++)
            {
                codechar2 = Character.toString(codecharacter2);
                codepart = codepart + " " + codechar2;
            }
            System.out.println(codepart); 
            codepart = "";
        }
    } 
}

當我在每一行的輸入沒有空格時(例如,如果我寫“9+”而不是“9+”),它可以完美地工作。 但是,例如,在編寫“9 +”時,我收到以下錯誤:“字符串索引超出范圍”。 我嘗試更改codecharacter2 = code.charAt(1); 在我的代碼中為codecharacter2 = code.charAt(2); codecharacter2 = code.charAt(3); 沒有成功。 我還嘗試使用code.replaceAll("\\s", "");創建一個新變量。 但這也會刪除“9 +”中的“+”。

我知道包含空間只會產生細微的差別,但問題明確說明了對它的需求。 因此,我將不勝感激有關如何解決此問題的任何幫助!

問題在這里code = sc.next(); 這意味着您只從輸入中獲取第一個標記,即第一個字符。 相反,您需要按照您的邏輯采取整條線,即,

code = sc.nextLine();

更好的解決方案是分別使用 integer 和字符。 檢查以下代碼:

    for (i = 1; i<=lines; i++)
    {
        codenumber= sc.nextInt();
        codechar2 = sc.nextLine().charAt(0);
        for (k=1; k<=codenumber; k++)
        {
            codepart = codepart + " " + codechar2;
        }
        System.out.println(codepart); 
        codepart = "";
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM