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

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

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

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

Q&A

解決済

2回答

5716閲覧

「 The left-hand side of an assignment must be a variable 」の原因が知りたい

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

0クリップ

投稿2021/09/04 07:18

提示コードのコメント部の/////の内部の2つのコードですが以下のエラーが発生します。これは何が原因なのでしょうか?

FileControl.ProcessStatus //enum型です

参考サイト: http://chronicles.blog.ryanrampersad.com/2012/02/java-the-left-hand-side-of-an-assignment-must-be-a-variable/

参考サイト: https://ja.stackoverflow.com/questions/20711/the-left-hand-side-of-an-assignment-must-be-a-variable-%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%82%8B

txt

1「 The left-hand side of an assignment must be a variable 」

java

1import java.io.IOException; 2import java.io.File; 3 4import javax.imageio.ImageIO; 5 6import java.awt.image.BufferedImage; 7 8import java.util.ArrayList; 9//import java.util.Arrays; 10import java.util.Collections; 11import java.util.List; 12 13/* ########################################## 14 * # ファイル操作クラス 15 * ##########################################*/ 16 17 18public class FileControl 19{ 20 //処理の進行状況 21 public enum ProcessStatus 22 { 23 Start, 24 LoadFilePath, //パスを読み込み 25 InputFilePaty, //パスを設定 26 LoadFileImage, //画像を読み込み 27 GeneratePage, //ページを生成 28 GeneratePDF, //PDFに書き込み 29 SaveFile, //ファイルを保存 30 Completion, //全て完了 31 } 32 33 //ファイルタイプ 34 public enum FileType 35 { 36 Directory, //ディレクトリ 37 File, //単一の画像ファイル 38 Invalid //対応していないファイル 39 } 40 41 42 //ディレクトリを取得 43 public static void GetDirectory(File dirName,List<List<Image>> outList,int splitNum) 44 { 45 List<String> strList = new ArrayList<>(); 46 47 //System.out.println("ああああ "+ dirName.listFiles().length); 48 49 //パスをロード 50 for(int i = 0; i < dirName.listFiles().length; i++) 51 { 52 strList.add(dirName.listFiles()[i].getPath()); 53// System.out.println("Load FilePath: " + dirName.listFiles()[i].getPath()); //デバッグ 54 } 55 56 Collections.sort(strList); //順番にソート 57 58 //パスを設定 59 int num = strList.size() / splitNum; //分割の枚数 60 int notMuch = strList.size() % splitNum; //余り 61 62 if( (float)(strList.size() % splitNum) > 0.0f ) 63 { 64 for(int i = 0; i< splitNum; i++) 65 { 66 outList.add(new ArrayList<>()); 67 68 if( i == (splitNum - 1) ) 69 { 70 for(int j = 0; j < num + notMuch; j++) 71 { 72 outList.get(outList.size() - 1).add(new Image(0,0,strList.get(num * i + j))); 73// System.out.println("Input FilePath: " + strList.get(num * i + j)); //デバッグ 74 } 75 } 76 else 77 { 78 for(int j = 0; j < num; j++) 79 { 80 outList.get(outList.size() - 1).add(new Image(0,0,strList.get(num * i + j))); 81// System.out.println("Input FilePath: " + strList.get(num * i + j)); //デバッグ 82 } 83 } 84 } 85 } 86 else 87 { 88 for(int i = 0; i< splitNum; i++) 89 { 90 outList.add(new ArrayList<>()); 91 92 for(int j = 0; j < num; j++) 93 { 94 outList.get(outList.size() - 1).add(new Image(0,0,strList.get(num * i + j))); 95// System.out.println("Input FilePath: " + strList.get(num * i + j)); //デバッグ 96 } 97 } 98 } 99 100 101 102 } 103 104 //画像をロード 105 public static void LoadImage(List<Image> outList) 106 { 107 for(int i = 0; i < outList.size(); i++) 108 { 109 try 110 { 111 BufferedImage b = ImageIO.read(new File(outList.get(i).path)); 112// System.out.println("LoadFileImage: " + outList.get(i).path + " --- size ---> ("+ b.getWidth() + " , " + b.getHeight() + ")"); //デバッグ 113 outList.get(i).width = b.getWidth(); 114 outList.get(i).height = b.getHeight(); 115 116 b = null; 117 } 118 catch(NullPointerException e) 119 { 120 121 } 122 catch (IOException e) 123 { 124 125 e.printStackTrace(); 126 } 127 128 } 129 } 130 131 132 133 //ファイルタイプを取得  134 public static FileType GetFileType(File file) 135 { 136 //ファイルかディレクトリかを選別 137 if(file.exists() == true) 138 { 139 if(file.isFile() == true) 140 { 141 String extension = file.getName().substring(file.getName().lastIndexOf(".")); 142 143 if(extension.equals(".png") || extension.equals(".jpg") || extension.equals(".jpeg")) 144 { 145 return FileType.File; 146 } 147 } 148 else 149 { 150 return FileType.Directory; 151 } 152 } 153 else 154 { 155 System.out.println("対応形式ではりません: " + file.getName()); 156 return FileType.Invalid; 157 } 158 159 return FileType.Invalid; 160 } 161}

java

1import java.io.IOException; 2 3import java.io.File; 4 5import java.util.List; 6import java.util.ArrayList; 7 8import java.util.concurrent.ExecutorService; 9import java.util.concurrent.Executors; 10import java.util.concurrent.Future; 11import java.util.concurrent.TimeUnit; 12 13import org.apache.pdfbox.pdmodel.PDDocument; 14//import org.apache.pdfbox.pdmodel.PDPage; 15 16 17 18/* 19* ############################### 20* ディレクトリを変換 21* ############################### 22*/ 23 24public class ConvertDirectory 25{ 26 static List<FileControl.ProcessStatus> status = new ArrayList<>(Main.threadNum); //進行状況 27 28 File path; //ディレクトリパス 29 int threadNum; //スレッド数 30 List<Converter> dirList = new ArrayList<>(); //変換 31 List<List<Image>> image = new ArrayList<>(); //画像 32 33 ExecutorService pool; //スレッドプール 34 35 //デバッグ用 処理時間 36 long startTime; //開始タイム 37 long endTime; //終了タイム 38 39 40 41 //コンストラクタ 42 public ConvertDirectory(File p,int t,ExecutorService es) 43 { 44 path = p; 45 threadNum = t; 46 pool = es; 47 } 48 49 50 51 public void Start() 52 { 53 FileControl.GetDirectory(path,image,threadNum); //パス取得 54 55 for(int i = 0; i < threadNum; i++) 56 { 57 dirList.add(new Converter(image.get(i),i)); 58 } 59 60 startTime = System.currentTimeMillis(); //デバッグ用 開始時間 61 62 //変換 63 int i = 0; 64 for(Converter con : dirList) 65 { 66/////////////////////////////////////////////////////////////////////////////////////////////////////////////// 67 status.get(i) = FileControl.ProcessStatus.Start; 68/////////////////////////////////////////////////////////////////////////////////////////////////////////////// 69 pool.submit(con); 70 i = 0; 71 } 72 73 //System.out.println("A: " + status.get(0)); 74 //System.out.println("B: " + status.get(1)); 75 //System.out.println("C: " + status.get(2)); 76 } 77 78 79 80 public void End() 81 { 82 83 84 try 85 { 86 List<PDDocument> document = new ArrayList<>(); 87 for(Converter d : dirList) 88 { 89 document.add(d.getDocument()); 90 } 91 92 93 for(int i = 1; i < document.size(); i++) 94 { 95 for(int j = 0; j < document.get(i).getNumberOfPages(); j++) 96 { 97 document.get(0).addPage(document.get(i).getPage(j)); 98 } 99 } 100 101 102 document.get(0).save( path.getAbsolutePath() + ".pdf"); //保存 103 104 105 106 //document.close 107 for(Converter d : dirList) 108 { 109 d.getDocument().close(); 110 } 111 112 113 } 114 catch(IOException e) 115 { 116 e.printStackTrace(); 117 } 118 119 endTime = System.currentTimeMillis(); //デバッグ用 終了時間 120 121 System.out.println("処理時間: " + (endTime - startTime)); 122 } 123} 124

java

1import java.io.IOException; 2import java.io.File; 3 4import javax.imageio.ImageIO; 5 6import java.awt.image.BufferedImage; 7 8import java.util.concurrent.Callable; 9 10import java.util.ArrayList; 11import java.util.Collections; 12import java.util.List; 13 14import org.apache.pdfbox.pdmodel.PDDocument; 15import org.apache.pdfbox.pdmodel.PDPage; 16import org.apache.pdfbox.pdmodel.PDPageContentStream; 17import org.apache.pdfbox.pdmodel.common.PDRectangle; 18import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; 19 20 21 22 23/* ################################################################## 24 * PDF 生成 ディレクトリ 25 * ##################################################################*/ 26 27//public class Converter implements Callable<FileControl.ProcessStatus> 28public class Converter implements Runnable 29{ 30 31 int threadNumber; //スレッド番号 32 33 34 PDDocument document; 35 List<Image> convList = new ArrayList<>(); 36 37 //document 38 public PDDocument getDocument() 39 { 40 return document; 41 } 42 43 //PDFを生成 44 private void GeneratePDF(List<Image> fileList) 45 { 46 try 47 { 48 49 List<PDPage> page = new ArrayList<>(); 50 51 // status = FileControl.ProcessStatus.LoadFileImage; 52 53 FileControl.LoadImage(convList); //画像をロード 54 55 // status = FileControl.ProcessStatus.GeneratePage; 56///////////////////////////////////////////////////////////////////////////////////////////////////////////////// 57 ConvertDirectory.status.get(0) = FileControl.ProcessStatus.GeneratePage; 58///////////////////////////////////////////////////////////////////////////////////////////////////////////////// 59 for(Image image : fileList) 60 { 61 PDRectangle rec = new PDRectangle(); 62 rec.setUpperRightX(0); 63 rec.setUpperRightY(0); 64 rec.setLowerLeftX(image.width); 65 rec.setLowerLeftY(image.height); 66 67 //System.out.println(image.path + "Page Generate --- size ---> ("+ image.width + " , " + image.height + ")"); 68 69 page.add(new PDPage(rec)); 70 71 document.addPage(page.get(page.size() -1)); 72 } 73 74 //status = FileControl.ProcessStatus.GeneratePage; 75 76 for(int i = 0; i < fileList.size(); i++) 77 { 78 79 PDImageXObject xImage = PDImageXObject.createFromFile(fileList.get(i).path,document); 80 PDPageContentStream stream = new PDPageContentStream(document,page.get(i)); 81 stream.drawImage(xImage, 0,0); 82 83 System.out.println( "PDF Generate: "+ fileList.get(i).path); 84 stream.close(); 85 } 86 87 //status = FileControl.ProcessStatus.Completion; 88 89 //document.save(filePath.getPath() + "\" + filePath.getName() + ".pdf"); 90 //System.out.println("--->: " + filePath.getPath() + "\" + filePath.getName() + ".pdf"); 91 92 93 //document.close(); 94 95 } 96 catch(IOException e) 97 { 98 e.printStackTrace(); 99 } 100 } 101 102 //コンストラクタ 103 public Converter(List<Image> i,int n) 104 { 105 threadNumber = n; 106 document = new PDDocument(); 107 convList = i; 108 } 109 110 //実行 111 @Override 112 public void run() 113 { 114 GeneratePDF(convList); //生成 115 } 116 117} 118

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

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

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

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

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

guest

回答2

0

ベストアンサー

List の i番目の要素の値を参照するのは .get(i)
List の i番目の要素の値を変更するのは .set(i, 値)

投稿2021/09/04 09:55

編集2021/09/04 09:57
kazuma-s

総合スコア8224

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

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

0

Google翻訳にかけてみる。
「代入の左側は変数でなければなりません」
メッセージの通り、変数でないstatus.get(i)、ConvertDirectory.status.get(0)に代入しようとしているのでエラーになっています。

投稿2021/09/04 07:28

編集2021/09/04 07:59
javahack

総合スコア1088

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

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

退会済みユーザー

退会済みユーザー

2021/09/04 09:08

それはわかるのですがなぜ列挙型に列挙型を代入するエラーになるのでしょうか?
mather

2021/09/04 09:17

勘違いしているようですが、 status.get(i) = FileControl.ProcessStatus.Start; において、「代入の左側」は status.get(i) です。
退会済みユーザー

退会済みユーザー

2021/09/04 09:38

statusがリストなのでその参照を取っているのですがこれが悪いのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問