Java 检查文本长度是否可以被2整除

Java 检查文本长度是否可以被2整除,java,Java,我想检查输入文本的长度是否可以被2整除 那就好像 如果我的文本长度是3,结果将是1.5,它将显示不可除以2和 如果我的文本长度是6,结果将是3.0,它将显示可被2整除 但无论文本长度是多少,我的代码都会显示输出“不可被2整除”。 我做错了什么 import java.util.Scanner; public class Test1 { public static void main (String[]args) { String a =null;

我想检查输入文本的长度是否可以被2整除

那就好像

如果我的文本长度是3,结果将是1.5,它将显示不可除以2和 如果我的文本长度是6,结果将是3.0,它将显示可被2整除

但无论文本长度是多少,我的代码都会显示输出“不可被2整除”。 我做错了什么

import java.util.Scanner;

public class Test1 {
    public static void main (String[]args)
    {

        String a  =null;
        int l = 0;
        double result = 0.0;

        Scanner scan = new Scanner(System.in);
        System.out.println("Enter your string\n");
        a = scan.nextLine();

        l = a.length();

        result = (double)l/2.0;

        System.out.println(result);

        if((double)result % 2 != .0) {
            System.out.println("not divisiable by 2");
        }
        else {
             System.out.println("divisiable by 2");
        } 

    }
}
是你的朋友,但只有整数

if (integer % divisibleBy == 0) { do stuff; }
编辑:我还发现它很好地概括了mod操作符的各种用法,并解释了为什么你的双mod不能像你期望的那样工作

编辑:还要更多地检查代码;它看起来像你除以2,然后再除以2。所以6/2=3,3是不均匀的。不知道如果使用8->8/2=4和4%2=0,代码是否可以工作

首先,
length()
返回一个
int
,使用整数更简单,那么为什么要将长度强制转换为
double
%
(模)运算符用于处理整数,而不是双精度;请记住,双精度数字是浮点数,所以如果您使用双精度数字,总有数字错误的空间

第二,你不需要使用太多的变量;保持简单:

a = scan.nextLine();
if(a.length() % 2 == 0)
    System.out.println("Length of string is divisible by 2");
else
    System.out.println("Length of string is not divisible by 2");
读(写)起来更容易,你不觉得吗

import java.util.Scanner;

public class Test1 {
    public static void main (String[]args)
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter your string\n");
        String str = scan.nextLine();
        int length = str.length();
        if(length % 2 !=0) {
            System.out.println("not divisible by 2");
        }
        else {
             System.out.println("divisible by 2");
        } 

    }
}
您的代码有很多问题:

  • 出于某种原因,您正在使用一个double来存储结果,而它应该是一个int
  • 变量名不能描述它们的用途
  • 不需要将变量初始化为默认值,只需要用新值覆盖它们

  • 哈哈,我讨厌这些小错误。我总是这样做。只需将两者切换到%

    String a  =null;
        int l = 0;
        double result = 0.0;
    
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter your string\n");
        a = scan.nextLine();
    
        l = a.length();
            //this is your problem
        result = (double)l%2.0;
            //this is your problem
    
        System.out.println(result);
    
        if((double)result % 2 != .0) {
            System.out.println("not divisiable by 2");
        }
        else {
             System.out.println("divisiable by 2");
        } 
    

    检查文本的长度,然后对其进行模运算

    模运算,一种检查一个数除以另一个数是否有余数的运算

    yourNumber%5 == 0
    

    其中,
    yourNumber
    是字符串的长度。从这里开始。

    可能的重复是将长度存储在
    l
    中,然后将
    l
    除以2,并将其存储在
    result
    中(作为双精度),然后检查
    result/2
    是否可被2整除。。。你被2除了两次!请提供OP的代码示例(以及将来的参考)