- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作一个简单的密码程序,或多或少将 ASCII 文本转换为二进制矩阵,因此“AAAA”将变为:
01000001
01000001
01000001
01000001
然后旋转它以使得:
1111
0000
0000
0000
0000
0000
1111
0000
我面临的问题是,似乎只要有一个“0”就不会返回任何内容,所以我最终得到的只是:
1111
1111
这是我的代码:
public class Cipher {
public static void main(String[] args) {
Scanner i = new Scanner(System.in);
System.out.print("1. Cipher text\n2. Decipher Text\n>");
int choice = i.nextInt();
if (choice == 1) {
System.out.println("Enter text to be ciphered: ");
String text = i.next();
String[] a = new String[text.length()];
String[] b = new String[text.length()];
String[] c = new String[text.length()];
String[] d = new String[text.length()];
String[] e = new String[text.length()];
String[] f = new String[text.length()];
String[] g = new String[text.length()];
String aa = "0";
String bb = "0";
String cc = "0";
String dd = "0";
String ee = "0";
String ff = "0";
String gg = "0";
for (int n = 0; n < 7; n++) {
for (int k = 6; k >= 0; k--) {
for (int j = 0; j < text.length(); j++) {
String buffer = Integer.toBinaryString(text.charAt(j));
switch (n) {
case 0: a[j] = buffer.substring(k, k + 1); break;
case 1: b[j] = buffer.substring(k, k + 1); break;
case 2: c[j] = buffer.substring(k, k + 1); break;
case 3: d[j] = buffer.substring(k, k + 1); break;
case 4: e[j] = buffer.substring(k, k + 1); break;
case 5: f[j] = buffer.substring(k, k + 1); break;
case 6: g[j] = buffer.substring(k, k + 1); break;
default: break;
}
}
}
}
for (int n = 0; n < 7; n++) {
for (int m = 0; m < text.length(); m++) {
System.out.println(a[m]);
}
}
} else if (choice == 2) {
}
}
}
以下是我希望它如何工作的示例:
输入的字符串:
ABCD
第一步:
01000001
01000010
01000011
01000100
“逆时针旋转”:
1010
0110
0001
0000
0000
0000
1111
0000
编辑:
这个过程是这样的:
一串 ASCII 字符转换为等效的二进制 ASCII
A - 01000001
B - 01000010
C - 01000011
D - 01000100
E - 01000101
F - 01000110
G - 01000111
等等
在这个例子中,我将使用字符串“ABABAC”,它会变成:
A -> 01000001
B -> 01000010
A -> 01000001
B -> 01000010
A -> 01000001
C -> 01000010
矩阵由字符串组成。字符串“ABABAC”变成矩阵:
01000001
01000010
01000001
01000010
01000001
01000100
注意:在我的代码中,这是以下部分:
String buffer = Integer.toBinaryString(text.charAt(j));
text 是用户输入的原始字符串,对于第一个循环,j 将为 0 或字符串文本中的第一个字符,即 A,它将定义缓冲区为 01000001。对于第二个循环,字符串的第二个字符text,如果是B,则将缓冲区定义为01000010。此过程循环进行,直到整个字符串文本已转换为二进制。
这个矩阵逆时针旋转90度变成
101010
010100
000001
000000
000000
000000
111111
000000
在我的代码中,这部分是:
switch (n) {
case 0: a[j] = buffer.substring(k, k + 1); break;
case 1: b[j] = buffer.substring(k, k + 1); break;
case 2: c[j] = buffer.substring(k, k + 1); break;
case 3: d[j] = buffer.substring(k, k + 1); break;
case 4: e[j] = buffer.substring(k, k + 1); break;
case 5: f[j] = buffer.substring(k, k + 1); break;
case 6: g[j] = buffer.substring(k, k + 1); break;
default: break;
这里,对于第一次迭代,情况是 n 为 0,j 为 0,因此选择第一种情况,并将数组 a[] 的 0 位置设置为 1,因为“01000001”的最后一个字符是 1 . 对于第二次迭代,处理字符 B。 B 是“01000010”,因此当读取最后一个字符时,返回 0。 N 为 0,因此选择情况 0,但 j 为 1,因此数组 A 的第二个位置设置为“0”,因为“01000010”的最后一个字符是“0”。
换句话说,每个数组的最后一个字符将成为第一个数组,每个数组的倒数第二个字符将成为第二个字符串,依此类推。
本质上,我正在做的过程是要求用户提供一个字符串,将字符串转换为等效的 ASCII 字符串,然后运行一些嵌套的 FOR 循环以从最后一个、倒数第二个、倒数第三个等生成数组。每个字符串的字符。我面临的问题是,每个 0 似乎都作为 null 发送,而不是作为实际的 0 发送到数组,导致输出全部为“1”。
最佳答案
密码类
要创建密码,只需按照 CipherhiddenText = new Cipher(userInput);
的方式进行操作
/**
* For the thread: http://stackoverflow.com/questions/35110522/need-help-implementing-matrix-rotation-in-java-for-cipher
*
* @author Riley C
* @version 1/30/16
*/
public class Cipher
{
// instance variables
private String text;
private String[] matrix;
private String[] encodedMatrix;
/**
* Constructor for objects of class Cipher
*/
public Cipher(String text)
{
this.text = text;
matrix = new String[text.length()];
for (int i = 0; i < matrix.length; i++) // Sets each point of the matrix array to binary string
{
matrix[i] = "0" + Integer.toBinaryString(text.charAt(i));
System.out.println(matrix[i]);
}
encodedMatrix = new String[8]; // Needs to hold 8 slots
for (int i = 0; i < 8; i++) // Will reverse the matrix counter clockwise...
{
encodedMatrix[i] = "";
for (int j = 0; j < matrix.length; j++)
encodedMatrix[i] += matrix[j].charAt(7 - i);
System.out.println(encodedMatrix[i]);
}
}
// getters and setters
public String getText() {return text;}
public String[] getMatrix() // Making dat deep copy
{
String[] returnMatrix = new String[this.matrix.length];
for (int i = 0; i < returnMatrix.length; i++)
returnMatrix[i] = this.matrix[i];
return returnMatrix;
}
public String[] getEncodedMatrix() // ...
{
String[] returnMatrix = new String[this.encodedMatrix.length];
for (int i = 0; i < returnMatrix.length; i++)
returnMatrix[i] = this.encodedMatrix[i];
return returnMatrix;
}
}
运行类
/**
* Used to test the cipher class
*/
public class CipherTest
{
public static void main(String[] args)
{
Cipher hello = new Cipher("hello");
System.out.println(hello.getText() + hello.getMatrix() + hello.getEncodedMatrix());
}
}
输出
01101000
01100101
01101100
01101100
01101111
01001
00001
01111
10111
00000
11111
11111
00000
hello[Ljava.lang.String;@16dfc0a[Ljava.lang.String;@1bafa2b
数学中的矩阵与计算机科学中的数组请注意,它是 array[1]
关于java - 需要帮助在 java 中实现 "matrix rotation"密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35110522/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!