質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

2319閲覧

自動車クラスの利用において、実行結果の不具合

ryota1006

総合スコア14

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/07/29 08:11

編集2018/07/29 19:53

//自動車クラス

public class Car {
private String name; //名前
private int width; //幅
private int height; //高さ
private int length; //長さ
private double x; //現在位置X座標
private double y; //現在位置Y座標
private double fuel; //残り燃料
private Day purchaseDay; //購入日

//コンストラクタ// Car(String name,int width,int height,int length,double fuel, Day purchaseDay){ this.name=name; this.width=width; this.height=height; this.length=length; this.fuel=fuel; x=y=0.0; this.purchaseDay = new Day(purchaseDay); } public double getX(){ return x;} //現在位置X座標を取得 public double getY(){ return y;} //現在位置Y座標を取得 public double getFuel(){ return fuel;} //残り燃料を取得 public Day getPurchaseDay() { //購入日を取得 return new Day(purchaseDay); } //スペック表示// void putSpec(){ System.out.println("名前:" + name); System.out.println("車幅:" + width+"mm"); System.out.println("車高:" + height+"mm"); System.out.println("車長:" + length+"mm"); } //X方向にdx・Y方向にdy移動// boolean move(double dx,double dy){ double dist=Math.sqrt(dx*dx+dy*dy); //移動距離 if(dist>fuel) return false; //移動できない ・・・燃料不足 else{ fuel-=dist; //移動距離の分だけ燃料が減る x+=dx; y+=dy; return true; //移動完了 } }

}

//日付クラスDay

public class Day {
private int year = 1; //年
private int month = 1; //月
private int date = 1; //日

//---コンストラクタ---// public Day() { } public Day(int year) { this.year = year; } public Day(int year, int month) { this(year); this.month = month; } public Day(int year, int month, int date) { this(year, month); this.date = date; } public Day(Day d) { this(d.year, d.month, d.date); } //---年・月・日を取得---// public int getYear() { return year; } //年を取得 public int getMonth() { return month; } //月を取得 public int getDate() { return date; } //日を取得 //---年・月・日を設定---// public void setYear(int year) { this.year = year; } //年を設定 public void setMonth(int month) { this.month = month; } //月を設定 public void setDate(int date) { this.date = date; } //日を設定 public void set(int year, int month, int date) { //年月日を設定 this.year = year; //年 this.month = month; //月 this.date = date; //日 } //---曜日を求める---// public int dayOfWeek() { int y = year; //0…日曜日 int m = month; //1…月曜日 if (m == 1 || m == 2) { // … y--; //5…金曜日 m += 12; //6…土曜日 } return (y + y / 4 - y / 100 + y / 400 + (13 * m + 8) / 5 + date) % 7; } //---日付dと等しいか---// public boolean equalTo(Day d) { return year == d.year && month == d.month && date == d.date; } //---文字列表現を返却---// public String toString() { String[] wd = {"日", "月", "火", "水", "木", "金", "土"}; return String.format("%04d年%02d月%02d日(%s)", year, month, date, wd[dayOfWeek()]); }

}

このときの利用例は

//自動車クラスの利用例

import java.util.Scanner;

public class CarTester3 {

public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.println("車のデータを入力せよ。"); System.out.print("名前は:"); String name = stdIn.next(); System.out.print("車幅は:"); int width = stdIn.nextInt(); System.out.print("高さは:"); int height = stdIn.nextInt(); System.out.print("長さは:"); int length = stdIn.nextInt(); System.out.print("ガソリン量は:"); double fuel = stdIn.nextDouble(); System.out.print("購入年:"); int y = stdIn.nextInt(); System.out.print("購入月:"); int m = stdIn.nextInt(); System.out.print("購入日:"); int d = stdIn.nextInt(); Car car2 = new Car(name, width, height, length, fuel, new Day(y, m, d)); car2.putSpec(); System.out.println("購入日:" + car2.getPurchaseDay()); }

}

この実行結果は

車のデータを入力せよ。
名前は:デロリアン
車幅は:1988
高さは:1140
長さは:4267
ガソリン量は:40
購入年:1985
購入月:10
購入日:26
名前:�f�����A��
車幅:1988mm
車高:1140mm
車長:4267mm
購入日:1985年10月26日(土)

文字化けしてしまう理由をご教示お願いします。

ちなみにコマンドプロンプトで実行したのではなく、NetBeans IDE 8.2 のなかで右クリックして実行しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umyu

2018/07/29 09:05

プログラムをどのように実行しましたか?コマンドプロンプトより実行していませんか? 質問文にソースコードの文字コードとどのように実行したかの手順を追記していただけませんか。
退会済みユーザー

退会済みユーザー

2018/08/12 06:55

車でデロリアンをデモでつかうとか年齢的にまずいんじゃないの
guest

回答1

0

Windos10のDos窓、Shift-JISの環境では、コマンドプロンプトからの実行で文字化けは起こりません。ご参考に。

投稿2018/08/12 06:30

UserOfJava

総合スコア57

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問