【问题标题】:Converting portions of an int array into integers?将 int 数组的部分转换为整数?
【发布时间】:2015-02-09 00:34:23
【问题描述】:

我正在尝试将消息(例如 "22 12 20 28" 的形式)转换为数组,例如 [22, 12, 20, 28],然后转换为单个整数,例如 22、12、20,然后是 28。我的代码应该可以工作,但由于某种原因它没有。

public class Decrypt {
    private String myMessage;
    private String e = "2718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035402123407849819334321068170121005627880235193033224745015853904730419957777093503660416997329725088687696640355570716226844716256079882651787134195124665201030592123667719432527867539855894489697096409754591856956380236370162112047742722836489613422516445078182442352948636372141740238893441247963574370263755294448337";
    private int character;
    private int myInteger;
    private int eInteger;
    private String decryptedMessage = "";

    public Decrypt(String myMessage){
        this.myMessage = myMessage;
    }

    public String Decryption(){         
        String[] splitMessage = myMessage.split(" ");
        int[] numbers = new int[splitMessage.length];
        String[] eMessage = e.split("");
        int[] eNumbers = new int[eMessage.length];

        for (int i=0; i<myMessage.length(); i++){
            eInteger = eNumbers[i];
            myInteger = numbers[i];
            System.out.println(eInteger + " " + myInteger);
            character = myInteger - eInteger;
            String stringCharacter = Integer.toString(character);
            decryptedMessage = decryptedMessage + " " + stringCharacter;
            System.out.println(i);

        }
        return decryptedMessage;
    }

    public String toString(){
        return "Message: " + Decryption();
    }    
}

我认为问题出在:

for (int i=0; i<myMessage.length(); i++){
    eInteger = eNumbers[i];
    myInteger = numbers[i];
    System.out.println(eInteger + " " + myInteger);
    character = myInteger - eInteger;
    String stringCharacter = Integer.toString(character);
    decryptedMessage = decryptedMessage + " " + stringCharacter;
    System.out.println(i);    
}

但我不知道它有什么问题。我不需要帮助来做更简单的方法,我只想知道为什么它没有返回我想要的东西。它只是返回 0。

【问题讨论】:

  • 你没有在numberseNumbers 中放任何东西,因此它们是0。人们会认为应该放一些东西,但你没有说什么所以我不确定如何解决它。
  • 但是我把 i 放进去了?它应该将 eNumbers[0] 转换为 int,然后将 eNumbers[1] 转换为 int,依此类推。
  • “但是我在里面放了 i 吗?” 你没有在里面放任何东西。 “它应该将 eNumbers[0] 转换为 int,然后将 eNumbers[1] 转换为 int,依此类推。” int[] 中的数组元素已经是 int...是您缺少的一些基本步骤,我们真的无法帮助您,因为我们也不知道您的程序应该如何工作。如果这是家庭作业,您应该查看作业的文本并询问教师是否不清楚。

标签: java arrays int


【解决方案1】:

一个,

      int[] numbers = new int[splitMessage.length];

不会自动创建一个数组,所有字符串都转换为 int。你必须明确地这样做。

【讨论】:

  • 我该如何明确地做到这一点?
【解决方案2】:

您还没有编写任何将单个字符串转换为整数的代码。这通常可以通过以下方式完成:

for (int i = 0; i < numbers.length; i++) {
    numbers[i] = Integer.parseInt(splitMessage[i]);
}

如果您使用的是 Java 8,您也可以使用:

int[] numbers = Arrays.stream(splitMessage)
    .mapToInt(Integer::parseInt).toArray();

【讨论】:

    猜你喜欢
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 2012-10-17
    相关资源
    最近更新 更多