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

时间:2014-10-12 03:37:29

标签: java

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

所以它就像

如果我的文本长度为3,结果将为1.5,它将显示不能被2和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");
        } 

    }
}

6 个答案:

答案 0 :(得分:3)

mod operation是你的朋友,但只有整数......

if (integer % divisibleBy == 0) { do stuff; }

编辑:我还发现this page做了一个非常好的工作,概述了mod操作符的各种用法,并解释了为什么你的双mod不能像你期望的那样工作。

编辑:还要更多地审核您的代码;它看起来像你除以2然后用2做mod。所以6/2 = 3和3不均匀。如果您使用8 - >,请注意您的代码是否可行。 8/2 = 4和4%2 = 0.

答案 1 :(得分:1)

检查文本的长度,然后对其进行模数。

答案 2 :(得分:1)

模数,一种检查数字是否具有余数的操作,如果它除以另一个数

yourNumber%5 == 0

其中yourNumber是String的长度。从这里拿走它。

答案 3 :(得分: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");

更容易阅读(和写),你不觉得吗?

答案 4 :(得分:0)

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");
        } 

    }
}

您的代码存在很多问题:

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

答案 5 :(得分:0)

哈哈,我讨厌这些小错误。我一直这样做。只需切换到%

即可
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");
    }