Java 循环不起作用,程序只是继续运行

Java 循环不起作用,程序只是继续运行,java,Java,所以我想写一个程序来满足这些要求,但是在使用循环方面有问题,因为程序根本无法运行。 程序应显示一个菜单,供用户选择以下操作。在操作完成后,此信息还会再次显示,直到用户退出程序 菜单包含以下项目,输入命名字母时将执行每个项目: 如果用户输入不同的字母,则不会发生任何事情或再次显示菜单 如果选择了菜单项A,则会显示提示以输入读取到字符串变量中的块。不得通过菜单项B、C和D的操作更改此变量!如有必要,必须在另一个字符串变量中创建记录的副本 如果用户执行菜单选项B,则读入记录将逐字符运行,并对

所以我想写一个程序来满足这些要求,但是在使用循环方面有问题,因为程序根本无法运行。 程序应显示一个菜单,供用户选择以下操作。在操作完成后,此信息还会再次显示,直到用户退出程序

  • 菜单包含以下项目,输入命名字母时将执行每个项目:
  • 如果用户输入不同的字母,则不会发生任何事情或再次显示菜单

  • 如果选择了菜单项A,则会显示提示以输入读取到字符串变量中的块。不得通过菜单项B、C和D的操作更改此变量!如有必要,必须在另一个字符串变量中创建记录的副本

  • 如果用户执行菜单选项B,则读入记录将逐字符运行,并对其中的空格数进行计数,然后输出(例如,“在记录中找到3个空格”)

  • 菜单项C确定句子中的第一个和最后一个单词(即从第一个到最后一个空格的所有内容),然后输出一个句子,其中这两个部分互换

    • 示例:这将“夜间比室外冷”转换为“室外比夜间冷”
  • 要确定第一个空格的位置,请使用函数indexOf。最后一个空间的位置最好使用lastIndexOf确定

  • 菜单项C仅在句子包含至少2个单词且字符串的第一个和最后一个位置没有空格时才起作用。否则,应显示错误消息“句子必须包含至少2个单词,且第一个和最后一个位置不得出现空格”

  • 使用菜单项D,所有元音(大写或小写)都将从句子中删除。然后,新句子也被输出

    • 示例:从“你好,爷爷,我打电话给埃米尔”中,您可以看到“Hll p,ch hb ml ngrfn”
  • 使用for循环遍历所有元音,这些元音预先存储在常量中!通过这种方式,您可以一次搜索一个元音,并在必要时删除它,直到所有出现的元音从字符串中消失

  • 只有在之前已输入句子的情况下,才能选择菜单项B、C和D。否则,如果在菜单中输入B、C或D,则会显示错误消息“尚未输入任何句子!”将显示,并再次显示菜单

  • 菜单项B、C和D的每次调用始终在用户输入的原始块上工作,而不是在可能已被先前执行的菜单项更改的块上工作!例如,如果连续多次执行菜单项C,则结果始终相同,并且每次都不会再次交换第一个字和最后一个字

  • 通过再次输入菜单项A,输入的块也可以被新块覆盖

  • 使用“X”,用户可以终止使用(免费版本)翻译的程序 公共静态void main(字符串[]args){

    }


    • 您需要学习如何使用调试器。然后您会发现变量
      aktion
      的值从未改变

      您可以正确地显示
      while
      循环每次迭代的菜单,但您只能要求用户输入一次选择,这是在最初进入循环之前

      将下面的代码与您的代码进行比较,我还建议您使用调试器单步执行

      String str1=null;
      字符串aktion=null;
      扫描仪=新的扫描仪(System.in);
      而(!“X”。等于(aktion)){
      System.out.format(“A)Satz eingeben”+%n“+”B)Anzahl Leerzeichen Bestinmen”+%n
      +“C)1.让我们把麦汁倒在地上”+%n”+“D)所有的食物都倒在地上”
      +%n“+”X)Ende“+%n”);
      aktion=scanner.nextLine();
      开关(aktion){
      案例“A”:
      System.out.println(“Bite Satz eingeben:”);
      str1=scanner.nextLine();
      打破
      案例“B”:
      如果(str1==null){
      System.out.println(“Noch-kein-Satz-eingegeben!”);
      }
      否则{
      System.out.println(语句调查员计数空格(str1)
      +“Leerzeichen im Satz gefunden.”);
      }
      打破
      案例“C”:
      如果(str1==null){
      System.out.println(“Noch-kein-Satz-eingegeben!”);
      }
      否则{
      字符串str2=语句调查员。切换第一个和最后一个单词(str1);
      系统输出打印项次(str2);
      }
      打破
      案例“D”:
      如果(str1==null){
      System.out.println(“Noch-kein-Satz-eingegeben!”);
      }
      否则{
      System.out.println(句子研究者除去元音(str1));
      }
      打破
      案例“X”:
      打破
      }
      }
      
      这是否回答了您的问题?请将描述限于实际问题。您已经提供了所有需求,但没有说明问题所在。“simply not run”(根本不运行)并没有太多说明。请注意,虽然此副本将修复一个错误,并且您的循环将被输入,但您永远不会更改循环中
      aktion
      的值,因此一旦进入循环,它将永远不会停止运行
      while(aktion!=“X”)
      应该是
      while(!“X”.equals(aktion))
      @ohgodspeiders我该怎么做?这就是为什么程序一直在运行,没有给我任何输出
      A) Enter block 
      B) Determine number of spaces 
      C) Swap 1st and last word 
      D) Remove all vowels 
      X) End
      
        String aktion = null;
        Scanner scanner = new Scanner(System.in);
        aktion = scanner.nextLine();
            while (!"X".equals(aktion)){
      
                System.out.format("A) Satz eingeben" + "%n" + "B) Anzahl Leerzeichen bestimmen" + "%n" + "C) 1. und letztes Wort vertauschen" + "%n" + "D) Alle Vokale entfernen" + "%n" + "X) Ende" + "%n");
                switch (aktion) {
                    case "A":
                    System.out.println("Bitte Satz eingeben:");
                     str1 = scanner.nextLine();
                    break;
      
                    case "B":
                    if (str1 == null) {
                        System.out.println("Noch kein Satz eingegeben!");
                    } else {
                        System.out.println(SentenceInvestigator.countWhiteSpaces(str1) + " Leerzeichen im Satz gefunden.");
                    }
                        break;
                    case "C":
                    if (str1 == null) {
                        System.out.println("Noch kein Satz eingegeben!");
                    } else {
                        String str2 = SentenceInvestigator.switchFirstAndLastWord(str1);
                        System.out.println(str2);
                    }
                        break;
                    case "D":
                    if (str1 == null) {
                        System.out.println("Noch kein Satz eingegeben!");
                    } else {
                        System.out.println(SentenceInvestigator.removeVowels(str1));
                    }
                        break;
                    case "X":
                    break;
      
            }
        }