2014-02-22 5 views
6

저는 프로그래밍에 익숙하지 않아 재미를 위해서 기본적인 두더지 (화학) 계산기를 만들려고했습니다. 나는이 질문을 찾지 못했다. 대답이 나에게 링크를 보내주십시오. 여기서 n = N/Nan = moleNa = 6.022E23(6.022/6.022 = 1000)을 나눌 때 1 대신 대답으로 1000을 얻으십시오. Java

코드의 첫 번째 부분은 에러가 발생 :

수식이다. 단지 하나를 얻으려고 노력하면서, 주어진 N으로 Na를 나누었고, 6.022E23 대신에 6.022로도 대답으로 1000.0을 얻었습니다.

Scanner in = new Scanner(System.in); 
double Na = 6.022; 

System.out.print("What do you want to know? Mol(0) or N(1)? "); 
int first = in.nextInt(); 
if (first == 0){ 
    System.out.print("Insert N: "); 
    double N = in.nextDouble(); 
    double mol = N/Na; 
    System.out.print("There are " + mol + " mol in that sample."); 
} 
else if (first == 1){ 
    System.out.print("Insert mol: "); 
    double mol = in.nextDouble(); 
    double N = mol*Na; 
    System.out.print("There are " + N + " molecules, atoms or ions in that sample."); 
} 

출력 0 :

What do you want to know? Mol(0) or N(1)? 0 
Insert N: 6.022 
There are 1000.0 mol in that sample. 

출력 1 : 사전에

What do you want to know? Mol(0) or N(1)? 1 
Insert mol: 1 
There are 6.022 molecules, atoms or ions in that sample. 

감사합니다.

double mol = N/6.022; 

이 당신이 원하는 무엇을 제공 :

+6

'Locale'문제처럼 보입니다. 어떤 로케일을 사용하고 있습니까? – Keppil

+1

@Keppil 그것이 내가 기대할 것입니다. 미국 시스템에서 점은 십진수 점이 아닌 수천 개의 구분 기호로 해석됩니다. –

+0

@Keppil 잘 모르겠습니다. 이 말을 처음 듣다 보니 그 말을 결코 들어 보지 못했습니다. 나는 당신이 지금 무슨 뜻인지 이해하고 있다고 생각합니다. 아니, 그게 문제가 아니야. 점과 쉼표로 모두 작업 할 수 있습니다. 하지만 1000은 1이 아닙니다. – EnderEgg

답변

5

당신이 작은 코드를 작성하기 때문에, 내가 할 수있는 새로운 코더에 대한 단순한 제안은 그래서는 하드 코드입니다. 오류를 인식하고 있기 때문에 6.022 대신 6022로보고 있기 때문에 오류가 발생합니다. 수천 가지 지표로. 희망이 도움이됩니다. 당신이 값을 하드 코딩하지 않으려면

, 추가 : 스캐너를 선언

in.useLocale(Locale.US); 

바로 아래에 위치를. 이 두 가지 솔루션 모두 문제를 해결해야합니다.

+0

Bumpwhite Q Bangwhistle 링크를 사용하고 in.useLocale (Locale.US)을 추가하십시오. 문제를 해결했다. 나는 Na를 미래의 참고 문헌에 보관하고 싶었다. 시간 내 주셔서 감사합니다. 과연. 그 편집은 모든 것에 응답하고 있습니다! – EnderEgg