当前位置: 首页 > 知识库问答 >
问题:

只是想知道我在代码中做错了什么?一些输入显示正确的结果和一些无效的结果?

欧阳玺
2023-03-14

我的程序对一些输入显示不正确的结果,对另一些输入显示正确的结果。我不知道我在代码中做错了什么。

在我的代码中,我想将一个字符串输入作为一个标签,如果它的每两个连续数字的和是偶数并且它的字母不是元音,那么它就是有效的。我认为字母“A”,“E”,“I”,“O”,“U”,“Y”是这个问题的元音。

输入格式:第一行包含一个长度为9的字符串。格式为“DDXDDD-DD”,其中D代表一个数字(非零),X为大写英文字母。

输出格式:如果字符串有效,我要打印“有效”(不带引号),否则打印“无效”(不带引号)。

示例-

Input: 13A357-22

Expected Output: valid

My Output: invalid

以下是我的代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;

class Digit {
    public static void main(String args[] ) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String vow = "AEIOUY";
        String tag = br.readLine();
        char temp[] = tag.toCharArray();
        if(temp[6] != '-' || Character.isLowerCase(temp[2]))
        {
            temp[6] = '-'; 
            temp[2] = Character.toUpperCase(temp[2]);
        }
        if(!vow.contains(Character.toString(temp[2])))
            System.out.println("invalid");
        else if( (temp.length == 9) && ( (temp[0] + temp[1]) % 2 == 0 ) && ( (temp[3] + 
            temp[4]) %2 == 0 )  && ( (temp[4] + temp[5]) % 2 == 0) && ( (temp[7] + temp[8]) % 2 == 0) )
            System.out.println("valid");
        else
            System.out.println("invalid");
    }

    public static String toString(char[] a)
    {
        String string = new String(a);
        return string;
    }
}

共有1个答案

戈念
2023-03-14

我认为这是您测试它是否是一个数字的方式,因为当我更改它时,每次我尝试时它都有效。

代码更改为数字检测:

else if((temp.length == 9) && IIIL(temp[0],numbers) && IIIL(temp[1],numbers) && 
IIIL(temp[3],numbers) && IIIL(temp[4],numbers) && IIIL(temp[5],numbers) && 
IIIL(temp[7],numbers) && IIIL(temp[8],numbers))
  

新功能:

public static Boolean IIIL(char inp, String list)
{
    Boolean end = false;
    char[] delimiter = list.toCharArray();

    for (int i = 0; i < delimiter.length; i++) {
        if (delimiter[i] == inp) {
            end = true;
        }
    }

    return(end);}

新变量:

String numbers = "1234567890";
 类似资料:
  • 问题内容: 我是Java的新手,所以我编写了这段代码,以便将这整个五年都称为布尔值,并为所有布尔值生成答案。但是,它仅调用最后一个。我该怎么做呢? 问题答案: 您每年需要使用单独的对象,或者至少在创建该年份的对象后立即调用the年检查方法。 您所拥有的是对函数的一系列调用,该函数将值分配给同一对象的属性。因此,只有最后一条语句才起作用,因为先前的值将被覆盖。 另外请注意,您的代码似乎没有正确组织。

  • 该程序允许用户以年数输入贷款金额和贷款期限。 每月和总付款应以1/8的利率递增显示。到目前为止,我已经足够正确地计算出一个数量,但我不知道如何显示所有结果。 我拍摄了以下问题的说明: http://imgur.com/s9JEbtu

  • 我的石头、布、剪刀游戏出错了: 代码:

  • 在选定的时间没有发送通知,当我运行代码时,直接显示了通知并显示了错误。下面是错误消息:E/NotificationManager:notifyAsUser:tag=null,id=12345,user=UserHandle{0}。我以为错误消息是由于生成的。版本SDK_INT,但添加之后,错误消息仍然存在。 将所有这些放在onCreate下: ; //PendingIntent alarmInte

  • 这是我的代码,我想在右侧显示注册和登录

  • 当我尝试编译这段代码时,Eclipse会出现以下两个错误: > 用于函数:maxmin的非法修饰符;只允许最终 对于:Mn不能解析为变量 为什么会出现这两个错误? 我想这可能已经回答了这个问题,但我不明白其中使用的术语。 这是我的代码: