-1

我需要帮助在 Java 中循环我的代码。到目前为止,我有:

import java.util.Scanner;
public class chara{
    public static void main(String[]args){
        int count = 0;
        Scanner input = new Scanner(System.in); 
        System.out.println("Input a string");
        String user=input.nextLine();
        if(user.length()<7)
        {
            return;
        }
        else
        {
        }
        System.out.println("Now input a letter to be replaced");
        String letter = input.next();
        if(letter.length()!=1) 
        {
            return;
        }
        else
        {
        }
        String user2 = user.replace(letter, "-");
        String user3 = user.replace(letter, "");
        count += (user.length() - user3.length());
        System.out.println(user2);
        System.out.println(user3);
        System.out.println("#"+letter+"'s: "+count);
    }
}

除了不满足字符串条件(用户<7,字母!= 1)时,代码会执行我想要的所有操作,程序终止并且我需要它做的是再次提出问题。有谁知道我怎么能做到这一点?

4

3 回答 3

0

您只需要一个带有中断条件的循环,这应该为您完成:

   Scanner input = new Scanner(System.in); 
       System.out.println("Input a string");
       String user=input.nextLine();
       while (true)
       {
           if(user.length() <7 ) {break;}
           input = new Scanner(System.in); 
           System.out.println("Too long, input a string < 7");
             user=input.nextLine();

       }

   if(user.length()<7)......
于 2013-02-16T00:36:08.263 回答
0

一种简单的方法是将主逻辑包装在带有布尔条件的循环中。当输入中存在“错误”时,此条件保持为真。当用户按需要继续时,条件为假。

您的代码将如下所示:

import java.util.Scanner;
public class Tester{
    public static void main(String[]args){
        int count = 0;
        boolean keepGoing = true;
        Scanner input = new Scanner(System.in); 
        while(keepGoing) {

            System.out.println("Input a string");
            String user=input.nextLine();
           if(user.length()<7)
           {
               keepGoing = true;
               //enter an error message here
           }
           else
           {
               System.out.println("Now input a letter to be replaced");
                String letter = input.next();
                if(letter.length()!=1) 
                {
                    keepGoing = true;
                    //enter an error message here
                }
                else
                {
                    String user2 = user.replace(letter, "-");
                    String user3 = user.replace(letter, "");
                    count += (user.length() - user3.length());
                    System.out.println(user2);
                    System.out.println(user3);
                    System.out.println("#"+letter+"'s: "+count);
                    keepGoing = false;
                }
           }
        }   
        input.close();  //Close resources
    }
}

无关

约定是类名以大写字母开头。在您的情况下,您的课程应该是Chara,而不是chara

此外,在打开资源时,请确保关闭它们。这是为了避免资源泄露。一些 IDE 会告诉您类似这样的信息Resource leak: 'input' is never closed。使用一个好的 IDE 来帮助您解决像这样的潜在问题是一个好主意。

于 2013-02-16T00:36:26.677 回答
0

您需要将循环代码放在可以调用的方法中,然后当不满足条件时,您可以返回您的问题,并根据该条件退出程序或调用循环方法。

于 2013-02-16T00:19:02.430 回答