Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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 项目赢得';I don’我看不出有什么问题_Java_String_For Loop_Boolean_Charat - Fatal编程技术网

Java 项目赢得';I don’我看不出有什么问题

Java 项目赢得';I don’我看不出有什么问题,java,string,for-loop,boolean,charat,Java,String,For Loop,Boolean,Charat,这是我的基本程序的一部分。我正在努力防止错误或错误信息通过。所以在代码的这一部分,我在用户输入姓名的地方设置了它,但是如果它包含数字或符号,它应该返回一个错误,直到输入适当的内容。然而,这只是有时起作用。我想不出它什么时候会起作用,什么时候不会起作用。我注意到的唯一一件事是,时间越长,经过的可能性就越大 import java.util.Scanner; public class Challenge1Easy { public static void main(String[] arg

这是我的基本程序的一部分。我正在努力防止错误或错误信息通过。所以在代码的这一部分,我在用户输入姓名的地方设置了它,但是如果它包含数字或符号,它应该返回一个错误,直到输入适当的内容。然而,这只是有时起作用。我想不出它什么时候会起作用,什么时候不会起作用。我注意到的唯一一件事是,时间越长,经过的可能性就越大

import java.util.Scanner;

public class Challenge1Easy
{
    public static void main(String[] args)
    {
        Scanner reader = new Scanner(System.in);
        String name, username;
        int age;
        boolean good = false;

        System.out.print("What's your name? ");
        name = reader.nextLine();

        String[] name1 = name.split("");

        do
        {
            System.out.print("Sorry, your \"name\" has characters that aren't letters in it. Please enter a real name. ");
            name = reader.nextLine();

            String[] name2 = name.split("");

            for (int i = 0; i < name.length(); i++)
            {
                if(!Character.isLetter(name.charAt(i)))
                {
                    good = false;
                }

                else
                {
                    good = true;
                }
            }
        }

        while(good != true);
import java.util.Scanner;
公开课挑战1容易
{
公共静态void main(字符串[]args)
{
扫描仪阅读器=新扫描仪(System.in);
字符串名称、用户名;
智力年龄;
布尔好=假;
系统输出打印(“你叫什么名字?”);
name=reader.nextLine();
字符串[]name1=name.split(“”);
做
{
System.out.print(“对不起,您的\“name\”中的字符不是字母,请输入真实姓名。”);
name=reader.nextLine();
字符串[]name2=name.split(“”);
对于(int i=0;i
我在这里查看了一些不同的问题,从这些问题/答案中提取了一些信息,并试图在我的程序中实现它,但显然有些东西不起作用。我做错了什么,有时它会捕捉到它,但有时它不会?输入类似于
Man99
的内容将导致提示输入新代码要显示的名称。但是,输入类似于khewriuhweiuf8489358934589734985345hiewf的内容将不会激活它

请忽略任何未使用的变量。它们稍后会在程序中使用,但不会影响我发布的内容。

试试这个

boolean good = true;
do
{

    for (int i = 0; i < name.length(); i++)
    {
        if(!Character.isLetter(name.charAt(i)))
        {
            good = false;
            break;
        }

        else
        {
            continue;
        }
    }

    if (!good) {
        System.out.print("Sorry, your \"name\" has characters that aren't letters in it. Please enter a real name. ");
        name = reader.nextLine();
    }
}

while(good != true);
boolean good=true;
做
{
对于(int i=0;i
花点时间通读您的
for循环
,如果必须,请将其读出并卸载

for (int i = 0; i < name.length(); i++)
{
    if(!Character.isLetter(name.charAt(i)))
    {
        good = false;
    }

    else
    {
        good = true;
    }
}
现在,如果你想做一些非常简单的事情,你可以使用像

good = text.matches("[a-zA-Z]");
只有当
名称
包含
a-z
之间的字符时,这将返回
true
。显然,这排除了
之类的情况,但您可以扩展此想法以满足更多要求

good = text.matches("[a-zA-Z]");