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

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

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

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

Q&A

解決済

3回答

445閲覧

ファイルから読み込んだ数字を挿入ソートで並び替えるプログラムを作成したいのですが・・・

845Qooyouglt

総合スコア7

Java

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

0グッド

0クリップ

投稿2018/05/29 22:19

編集2018/05/30 02:38
java初心者です。eclispeを使用しています。 ファイルから読み込んだ数字を挿入ソートで並び替えるプログラムを 作成していますがうまくできません。 どのように書き換えればよいか教えていただきたいです。 追記:回答、修正などいろいろなご指摘本当にありがとうございます。 下記のように書き換えるとエラーがでました・・・ どこがいけないのでしょうか? ```###エラーコード Exception in thread "main" java.lang.NumberFormatException: For input string: "1,3,4,6,2,7,5" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at Insert.test.main(test.java:11) ```java package Insert; public class test { public static void main(String[] args) { String fn ="c:\InputData.txt"; String ret[] =FRead.getLines(fn); int[] data =new int[fn.length()]; for(int i=0 ; i <ret.length; i++){ data[i]= Integer.parseInt(ret[i]); } for(int i=0; i < data.length; i++) { int tmp =data[i]; int j =i-1; while (j>0 && tmp < data[j]){ data[j+1] = data[j]; j--; } data[j+1] = tmp; } for(int i=0; i < data.length; i++) { System.out.println(data[i]+ " "); } } }

java

1package Insert; 2import java.io.IOException; 3import java.io.FileInputStream; 4import java.io.InputStreamReader; 5import java.io.BufferedReader; 6import java.util.ArrayList; 7 8public class FRead { 9 10 public static String[] getLines(String fileName) { 11 ArrayList list =new ArrayList(); 12 try{ 13 BufferedReader br = new BufferedReader 14 (new InputStreamReader(new FileInputStream(fileName))); 15 String line = null; 16 17 while ((line = br.readLine()) !=null){ 18 list.add(line); 19 } 20 br.close(); 21 } catch(IOException err) { 22 } 23 return (String[]) list.toArray(new String[list.size()]); 24 25} 26 } 27

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

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

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

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

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

a_saitoh

2018/05/29 22:26

まずはデータが2個の場合について、自分がjavaになったつもりで実行を追ってみてはどうですか?なんかあまり考えずにテキトーに書いたコードに見えます。
m.ts10806

2018/05/30 00:36

プログラムコード(およびエラーメッセージ)は質問内容としては最も重要な部分であるため、見やすくしていただけると助かります。<code>ボタン押下→「コード」部分にコードを貼り付け→「ここに言語を入力」に対象言語名記入(エラーメッセージの場合は不要)の手順で「コードハイライト化」してください。(質問編集画面ではリアルタイムでプレビューが表示されるので見ながら調整してください)
m.ts10806

2018/05/30 02:09

質問編集画面タイトル横にある「初心者アイコン」をご活用ください。「初心者」と質問で書くよりも伝わりますし、質問一覧に表示されるのでわかりやすくなります。
845Qooyouglt

2018/05/30 02:12

ご指摘ありがとうございます。
swordone

2018/05/30 02:20

FRead.getLinesってなんですか?
845Qooyouglt

2018/05/30 02:43

FReadクラスで読み取った文字を配列にするために使ってます。(調べてて見つけたのを使いました。)
guest

回答3

0

ベストアンサー

(1) 配列 data のサイズは FRead が返した配列のサイズにします。

java

1int[] data = new int[fn.length()];

->

java

1int[] data = new int[ret.length];

(2) FRead が返した文字列の配列を整数の配列 data に格納します。

java

1 System.out.println(ret[i]);

->

java

1 data[i] = Integer.parseInt(ret[i]);

投稿2018/05/29 22:58

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

いろいろ修正した結果プログラム完成しました。
アドバイスご指摘していただいた方々
ありがとうございました。

投稿2018/05/30 06:06

845Qooyouglt

総合スコア7

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

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

0

こんにちは、
選択ソートのところは以下のようにすればできます。
(下のソースコードの配列の要素数data.lengthのところを適宜ret.length変更してください。)

Java

1public class Main { 2 public static void main(String[] args) { 3 4 int []data = {4,8,7,5,2,10,3,1,5,6,7,15}; 5 6 for(int i = 0; i < data.length; i++){ 7 int tmp = data[i]; 8 int j = i - 1; 9 while (j >= 0 && data[j] > tmp) { 10 data[j + 1] = data[j]; 11 j--; 12 } 13 data[j + 1] = tmp; 14 } 15 16 for(int i = 0; i < data.length; i++){ 17 System.out.print(data[i] + " "); 18 } 19 } 20}

投稿2018/05/30 00:34

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問