#[環境]
Java version 16.0.1
VS Code
Mac OS Big Surの環境です。
java -version
java version "16.0.1" 2021-04-20
Java(TM) SE Runtime Environment (build 16.0.1+9-24)
Java HotSpot(TM) 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)
MacBook:09_MinutesToYearsandDayCalculator $
#[エラー]
エラーメッセージは出てきていません。
[学習状況]
progateを3巡、ドットインストール1巡、スッキリJavaの本を8割読みました。現在、UdemyのJava Programming Masterclass for Software Developersというコースで演習問題に取り組んでいます
この問題はUdemyでの演習22番目なので、まったくの初めてというわけではありません。
まだまだ初心者ですが真面目に取り組んでいるので、何卒、よろしくお願いします。
#[演習問題の内容]
数字を文字にするプログラムを書く演習をやりました。
(607)→(Six Zero Seven)
そのためにメソッドを3つ用意しています。
##numberToWords
数字を文字にしています。他の2つのメソッドを組み合わせて使います。
##getDigitCount
100を逆にすると001→1になってしまうので、桁数を確認しています。
##reverse
数字を逆にします。
(123)→(321)
#[わからない事]
プログラムは思ったように動いてくれすのですが、その後必ず固まります。
再起動を2回しましたが、同じでした。
プログラムになにか問題があるのでしょうか?
#[やってみたこと]
3つあるメソッドをそれぞれ別のファイルに書いてテストしました。
それぞれ、問題なく動きました。
#[自分コード]
java
1public class NumberToWords{ 2 public static void NumberToWords(int number){ 3 if(number<0){ 4 System.out.println("Invalid Value"); 5 } 6 int r_number=reverse(number); 7 int a =getDigitCount(number)-getDigitCount(r_number); 8 9 for(int i=0; i<a ; i++){ 10 System.out.println("Zero"); 11 } 12 13 14 int digit; 15 int stored = r_number; 16 while(true){ 17 if(stored>0){ 18 digit = stored % 10 ; 19 stored = stored / 10; 20 switch(digit){ 21 case 0: 22 System.out.println("Zero"); 23 break; 24 case 1: 25 System.out.println("One"); 26 break; 27 case 2: 28 System.out.println("Two"); 29 break; 30 case 3: 31 System.out.println("Three"); 32 break; 33 case 4: 34 System.out.println("Four"); 35 break; 36 case 5: 37 System.out.println("Five"); 38 break; 39 case 6: 40 System.out.println("Six"); 41 break; 42 case 7: 43 System.out.println("Seven"); 44 break; 45 case 8: 46 System.out.println("Eight"); 47 break; 48 case 9: 49 System.out.println("Nine"); 50 break; 51 } 52 } 53 } 54 } 55 56 57 public static int reverse(int n3){ 58 int reverse_n = 0; 59 int digit = 0; 60 while(n3 != 0){ 61 digit = n3 % 10; 62 reverse_n = (reverse_n * 10) + digit; 63 n3 /= 10; 64 } 65 return reverse_n; 66 } 67 public static int getDigitCount(int n4){ 68 int count=0; 69 while(n4 != 0){ 70 count++; 71 n4 /= 10; 72 } 73 return count; 74 } 75 76} 77 78 79
java
1public class Main { 2 public static void main(String[] args) { 3 4 NumberToWords.NumberToWords(607); 5 6 } 7 8}
java
1public class NumberToWords_test{ 2 public static void NumberToWords(int n2){ 3 if(n2<0){ 4 System.out.println("Invalid Value"); 5 } 6 int digit; 7 int stored = n2; 8 while(true){ 9 if(stored>0){ 10 digit = stored % 10 ; 11 stored = stored / 10; 12 switch(digit){ 13 case 0: 14 System.out.println("Zero"); 15 break; 16 case 1: 17 System.out.println("One"); 18 break; 19 case 2: 20 System.out.println("Two"); 21 break; 22 case 3: 23 System.out.println("Three"); 24 break; 25 case 4: 26 System.out.println("Four"); 27 break; 28 case 5: 29 System.out.println("Five"); 30 break; 31 case 6: 32 System.out.println("Six"); 33 break; 34 case 7: 35 System.out.println("Seven"); 36 break; 37 case 8: 38 System.out.println("Eight"); 39 break; 40 case 9: 41 System.out.println("Nine"); 42 break; 43 } 44 } 45 } 46 } 47}
java
1public class NumberToWords_test2{ 2 3 public static void reverse(int n3){ 4 int reverse_n = 0; 5 int digit = 0; 6 while(n3 != 0){ 7 digit = n3 % 10; 8 reverse_n = (reverse_n * 10) + digit; 9 n3 /= 10; 10 } 11 System.out.println(reverse_n); 12 } 13 14} 15
java
1public class NumberToWords_test3{ 2 3 4 public static int getDigitCount(int n4){ 5 int count=0; 6 while(n4 != 0){ 7 count++; 8 n4 /= 10; 9 } 10 return count; 11 } 12}
#ネットにあった模範回答
java
1public static void numberToWords(int number) { 2 3 if (number < 0) { 4 System.out.println("Invalid Value"); 5 } 6 7 int reverseNumber = reverse(number); 8 for (int i = 0; i < getDigitCount(number); i++) { 9 10 switch (reverseNumber % 10) { 11 case 0: 12 System.out.print("Zero "); 13 break; 14 case 1: 15 System.out.print("One "); 16 break; 17 case 2: 18 System.out.print("Two "); 19 break; 20 case 3: 21 System.out.print("Three "); 22 break; 23 case 4: 24 System.out.print("Four "); 25 break; 26 case 5: 27 System.out.print("Five "); 28 break; 29 case 6: 30 System.out.print("Six "); 31 break; 32 case 7: 33 System.out.print("Seven "); 34 break; 35 case 8: 36 System.out.print("Eight "); 37 break; 38 case 9: 39 System.out.print("Nine "); 40 break; 41 default: 42 break; 43 } 44 reverseNumber /= 10; 45 } 46 47 System.out.println(); 48} 49 50public static int reverse(int number) { 51 52 int reverseNumber = 0; 53 54 while (number != 0) { 55 reverseNumber = (reverseNumber * 10) + (number % 10); 56 number /= 10; 57 } 58 return reverseNumber; 59} 60 61public static int getDigitCount(int number) { 62 63 if (number < 0) { 64 return -1; 65 } 66 67 int counter = 1; 68 while (number > 9) { 69 number /= 10; 70 counter++; 71 } 72 return counter; 73}
回答2件
あなたの回答
tips
プレビュー