일부인 경우. 어떤 연산은 double을 취하고 다른 연산은 int만을 취하기 때문에 int와 double을 비교합니다. 프로그램은 두 개의 동일하다고 복귀 되더라도 그들이 단지 라운드 같다면 (즉 7.5=7
)이다. 두 사람이 실제로 이 인 경우에만 프로그램이 true를 반환하도록하고 싶습니다. 나는 여기에 나열된 솔루션을 시도했다 : How to test if a double is an integer 내 double 형 int인지 확인하십시오. 그들은 컴파일하지만,이 프로그램은 아직도 내가 해봤 7=7.5
는 다른 방향으로가는 반환 - - 그들 모두가 표시
작동하는 복식 내의 int로 변환 - 같은 결과를. 내 프로그램에서 그 차이를 인정하도록하려면 어떻게합니까? 가장 최근의 제안 :자바 테스트 두 숫자가 동일한 경우 두 번 내 프로그램 테스트를 int
import acm.program.ConsoleProgram;
import java.awt.Color;
import acm.io.IODialog;
import java.text.*;
import static java.lang.Math.*;
import java.util.*;
/** Tests to see if user color matches sample colors */
public class ColorMatch extends ConsoleProgram
{
//defining sample colors
Color[] dmc =
{
new Color(255,255,255),
new Color(43,57,41),
new Color(213,39,86),
new Color(0,160,130),
new Color(0,0,0),
};
public void run()
{
average();
}
//averages three colors, then tests for match to given color
public void average()
{
//asks for stitch color
IODialog dialog = new IODialog();
int stitchRed = dialog.readInt("Enter red value: ");
int stitchGreen = dialog.readInt("Enter green value: ");
int stitchBlue = dialog.readInt("Enter blue value: ");
Color stitchColor = new Color(stitchRed,stitchGreen,stitchBlue);
//gets averages for dmc colors
for (Color i:dmc)
{
for (Color j:dmc)
{
for (Color k:dmc)
{
int indexI = Arrays.asList(dmc).indexOf(i);
int indexJ = Arrays.asList(dmc).indexOf(j);
int indexK = Arrays.asList(dmc).indexOf(k);
if (indexI <= indexJ && indexJ <= indexK)
{
int iRed = i.getRed();
int jRed = j.getRed();
int kRed = k.getRed();
int iGreen = i.getGreen();
int jGreen = j.getGreen();
int kGreen = k.getGreen();
int iBlue = i.getBlue();
int jBlue = j.getBlue();
int kBlue = k.getBlue();
double redAverage = (iRed+jRed+kRed)/3;
double greenAverage = (iGreen+jGreen+kGreen)/3;
double blueAverage = (iBlue+jBlue+kBlue)/3;
if (redAverage == (int)redAverage && greenAverage == (int)greenAverage && blueAverage == (int)blueAverage)
{
int rAverage = (int)redAverage;
int gAverage = (int)greenAverage;
int bAverage = (int)blueAverage;
Color colorAverage = new Color(rAverage,gAverage,bAverage);
//tests to see if any average equals the stitch color
if (colorAverage.equals(stitchColor))
{
println("The color match is: " + i + ", " + j + ", " + k);
}
}
}
}
}
}
나는 내 테스트 번호로 85s를 연결했습니다.
유일한 결과 (0,0,0)+(0,0,0)+(255,255,255)
해야하지만, 또한 (43,57,41)+(213,39,86)+(0,160,130) . (41+86+130)/3=85.7!=85
을 수득한다.
[mcve]를 게시하십시오. –
는 또한 복식과의 int와 문제에 대한이 질문을보고 시도 : http://stackoverflow.com/q/9898512/5335355 – CShark