gpt4 book ai didi

java - 在 Java 中编码代码

转载 作者:行者123 更新时间:2023-12-04 07:01:26 26 4
gpt4 key购买 nike

在过去的几周里,我通读了这本书 Error Control Coding: Fundamentals and Applications为了了解电信公司初级编程角色的 BCH(Bose、Chaudhuri、Hocquenghem)代码。

这本书主要涵盖了该主题背后的数学和理论,但我正在努力实现一些概念;主要是获取接下来的 n 个代码字。我有一个 GUI(通过 NetBeans 实现,所以我不会发布代码,因为文件很大)它传递了一个代码以获得接下来的 n 个数字:

生成这些数字是我遇到问题的地方。如果我能在编码方法中完成所有这些,而不是使用 GUI 循环,我的生活就会轻松十倍。

这已经让我疯狂了好几天,因为从输入中生成 0000000000 很容易,但是我不知道从那里开始我的代码。然后我该怎么做才能生成下一个工作号码?

任何生成上述代码的帮助将不胜感激。

最佳答案

(大编辑...)多玩一点代码这似乎有效:

import java.util.ArrayList;
import java.util.List;


public class Main
{
public static void main(final String[] argv)
{
final int startValue;
final int iterations;
final List<String> list;

startValue = Integer.parseInt(argv[0]);
iterations = Integer.parseInt(argv[1]);
list = encodeAll(startValue, iterations);
System.out.println(list);
}

private static List<String> encodeAll(final int startValue, final int iterations)
{
final List<String> allEncodings;

allEncodings = new ArrayList<String>();

for(int i = 0; i < iterations; i++)
{
try
{
final int value;
final String str;
final String encoding;

value = i + startValue;
str = String.format("%06d", value);
encoding = encoding(str);
allEncodings.add(encoding);
}
catch(final BadNumberException ex)
{
// do nothing
}
}

return allEncodings;
}

public static String encoding(String str)
throws BadNumberException
{
final int[] digit;
final StringBuilder s;

digit = new int[10];

for(int i = 0; i < 6; i++)
{
digit[i] = Integer.parseInt(String.valueOf(str.charAt(i)));
}

digit[6] = ((4*digit[0])+(10*digit[1])+(9*digit[2])+(2*digit[3])+(digit[4])+(7*digit[5])) % 11;
digit[7] = ((7*digit[0])+(8*digit[1])+(7*digit[2])+(digit[3])+(9*digit[4])+(6*digit[5])) % 11;
digit[8] = ((9*digit[0])+(digit[1])+(7*digit[2])+(8*digit[3])+(7*digit[4])+(7*digit[5])) % 11;
digit[9] = ((digit[0])+(2*digit[1])+(9*digit[2])+(10*digit[3])+(4*digit[4])+(digit[5])) % 11;

// Insert Parity Checking method (Vandermonde Matrix)
s = new StringBuilder();

for(int i = 0; i < 9; i++)
{
s.append(Integer.toString(digit[i]));
}

if(digit[6] == 10 || digit[7] == 10 || digit[8] == 10 || digit[9] == 10)
{
throw new BadNumberException(str);
}

return (s.toString());
}
}

class BadNumberException
extends Exception
{
public BadNumberException(final String str)
{
super(str + " cannot be encoded");
}
}

我更喜欢抛出异常而不是返回一个特殊的字符串。在这种情况下,我会忽略通常我会说是不好的做法的异常,但对于这种情况,我认为这是您想要的。

关于java - 在 Java 中编码代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1775557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com