Java 为什么空间后的所有内容都不打印?
我使用acm库创建了一个简单的程序,该程序接收用户输入的字符串,并用morse打印出来。以下是节目:Java 为什么空间后的所有内容都不打印?,java,acm-java-libraries,Java,Acm Java Libraries,我使用acm库创建了一个简单的程序,该程序接收用户输入的字符串,并用morse打印出来。以下是节目: import acm.program.*; public class morse extends Program{ public void run(){ String[] alphabet = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V"
import acm.program.*;
public class morse extends Program{
public void run(){
String[] alphabet = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
String[] morse = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
String word = readLine("Give the word(s) to transcribe: ").toUpperCase();
println("Morse: ");
int j = 0;
for(int i = 0; i < word.length(); i++){
int k = 0;
boolean flag = true;
if(Character.toString(word.charAt(j)).equals(" ")){
println();
}else {
while(!Character.toString(word.charAt(j)).equals(alphabet[k])){
if(k < 25){
k += 1;
}else{
println("Letter was not found.");
flag = false;
break;
}
}
if(flag){
println(morse[k] + " ");
}
j += 1;
}
}
}
}
导入acm.program.*;
公共类莫尔斯扩展程序{
公开募捐{
字符串[]字母={“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”、“K”、“L”、“M”、“N”、“O”、“P”、“Q”、“R”、“S”、“T”、“U”、“V”、“W”、“X”、“Y”、“Z”};
字符串[]莫尔斯={“-”、“-…”、“-.-”、“-…”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”、“-”;
String word=readLine(“指定要转录的单词:”).toUpperCase();
println(“莫尔斯:”);
int j=0;
for(int i=0;i
但是,每次字符串包含空格时,空格后的所有内容都不会打印。我真的找不到这背后的原因。有人能帮我吗,甚至能给我指个地方吗?谢谢
(空格后的字母都打印为空格)我不知道您为什么在
for
循环中定义I
,但从不使用它。您的主要问题是,当遇到空格时,不会增加j
。我认为你有两个选择:
- 调用
println()后增量
代码>在j
if
- 完全放下
,只要在以前使用j
的地方使用j
(可能是更好的主意)i
对代码的一般建议:您执行了太多奇怪的字符和字符串逻辑。你可以
- 放下
字母表
- 从
字符串中获取
,方法与当前相同字符
- 从中减去
'A'
- 使用生成的
作为索引访问char
数组morse
- 在循环过程中,放下
和整个k
for
循环中定义I
,但从不使用它。您的主要问题是,当遇到空格时,不会增加j
。我认为你有两个选择:
- 调用
println()后增量
代码>在j
if
- 完全放下
,只要在以前使用j
的地方使用j
(可能是更好的主意)i
对代码的一般建议:您执行了太多奇怪的字符和字符串逻辑。你可以
- 放下
字母表
- 从
字符串中获取
,方法与当前相同字符
- 从中减去
'A'
- 使用生成的
作为索引访问char
数组morse
- 在循环过程中,放下
和整个k
j
和k
应该代表?它们只是计数器,你认为它们在计算什么?什么是j
和k
应该代表什么?它们只是计数器,你认为它们在计算什么?但我在if之后增加j,这意味着无论它是什么increased@Gus不仅在else
@Gus No内递增,在else
块内递增j
。只是有误导性的缩进。我刚刚意识到j在else里面,缩进很严重。就是这样。@luk2302我没有完全明白你说的话,但我在if之后增加了j,这意味着无论它是什么increased@Gus不,您只在else
@Gus内递增它。不,您在else
块内递增j
。只是有误导性的缩进。我刚刚意识到j在else里面,缩进很严重。我不太明白你说的话