Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么空间后的所有内容都不打印?_Java_Acm Java Libraries - Fatal编程技术网

Java 为什么空间后的所有内容都不打印?

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"

我使用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","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里面,缩进很严重。我不太明白你说的话