我想检查输入文本的长度是否可以被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");
}
}
}
答案 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");
}
}
}
您的代码存在很多问题:
答案 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");
}