Question

In: Computer Science

Using JAVA The following code is able to read integers from a file that is called...

Using JAVA

The following code is able to read integers from a file that is called "start.ppm" onto a 3d array called "startImage".

Implement the code by being able to read from another file (make up any file name) and save the data onto another 3d array lets say you call that array "finalImage".

The purpose of this will be to add both arrays and then get the average

Save the average onto a separte 3darray,lets say you call it "middlearray"

Then add startImage and middlearray and get the average then save it to another array called "fourtharray"

Then add finalImage and middle array and get the average then save it to another array called "fiftharray".

Print all 5 arrays

I can not submit data file because there are about 667,000 integers on the files. The file is from an image that got converted onto a ppm file. I don't really see the purpose in adding the file to this question either way. The code below is already capalbe of reading from one file i just need to code that will allow me to read from a different file (lets say we call that file "final.ppm". and then ansew the questions above.

import java.util.Scanner;
import java.io.*;

public class P1
{

public static void main(String[] args) throws IOException
{
final int ROW=1000;
final int COL=667;
File file= new File("start.ppm");
Scanner inputF= new Scanner(file);

int[][][] startImage= new int[ROW][COL][3];
  
int row=0, col=0;
int line=1;
while (inputF.hasNext())
{
if(line<=4)
{
inputF.nextLine();
line++;
}
else
{
line+=3;
if (col< COL)
{
startImage[row][col][0]=inputF.nextInt();
startImage[row][col][1]=inputF.nextInt();
startImage[row][col][2]=inputF.nextInt();
col++;
}
else
{
row++;
col=0;
startImage[row][col][0]=inputF.nextInt();
startImage[row][col][1]=inputF.nextInt();
startImage[row][col][2]=inputF.nextInt();
col++;

}
}
  
}
inputF.close();


for(row=0;row {
for(col=0;col {
for(int color=0;color<3;color++)
{
System.out.println(startImage[row][col][color]);

}
}
}

}

}

Solutions

Expert Solution

import java.util.Scanner;
import java.io.*;

public class P1 {
        static final int ROW = 1000;
        static final int COL = 667;

        public static void readImage(int[][][] startImage, String fileName) {
                Scanner inputF = new Scanner(fileName);

                int row = 0, col = 0;
                int line = 1;
                while (inputF.hasNext()) {
                        if (line <= 4) {
                                inputF.nextLine();
                                line++;
                        } else {
                                line += 3;
                                if (col < COL) {
                                        startImage[row][col][0] = inputF.nextInt();
                                        startImage[row][col][1] = inputF.nextInt();
                                        startImage[row][col][2] = inputF.nextInt();
                                        col++;
                                } else {
                                        row++;
                                        col = 0;
                                        startImage[row][col][0] = inputF.nextInt();
                                        startImage[row][col][1] = inputF.nextInt();
                                        startImage[row][col][2] = inputF.nextInt();
                                        col++;
                                }
                        }

                }
                inputF.close();
        }

        public static void printImage(int[][][] startImage) {
                for (int row = 0; row < ROW; row++) {
                        for (int col = 0; col < COL; col++) {
                                for (int color = 0; color < 3; color++) {
                                        System.out.println(startImage[row][col][color]);
                                }
                        }
                }
        }
        
        public static int[][][] getAverage(int[][][] p1, int[][][] p2) {
                int[][][] avgImage = new int[ROW][COL][3];
                
                for(int i=0; i<ROW; i++) {
                        for(int j=0; j<COL; j++) {
                                for(int k=0; k<3; k++) {
                                        avgImage[i][j][k] = p1[i][j][k] + p2[i][j][k];
                                }
                        }
                }
                
                return avgImage;
        }
        
        public static void main(String[] args) throws IOException {
                int[][][] startImage = new int[ROW][COL][3];
                readImage(startImage, "start.ppm");
                printImage(startImage);

                int[][][] finalImage = new int[ROW][COL][3];
                readImage(startImage, "final.ppm");
                printImage(startImage);

                int[][][] middlearray = getAverage(startImage, finalImage);
                printImage(middlearray);

                int[][][] fourtharray = getAverage(startImage, middlearray);
                printImage(fourtharray);

                int[][][] fiftharray = getAverage(finalImage, middlearray);
                printImage(fiftharray);
                
        }

}
**************************************************
I have converted your code to modules and hence, The main method is very clean now.. And you can add more functionality if needed.

Thanks for your question. We try our best to help you with detailed answers, But in any case, if you need any modification or have a query/issue with respect to above answer, Please ask that in the comment section. We will surely try to address your query ASAP and resolve the issue.

Please consider providing a thumbs up to this question if it helps you. by Doing that, You will help other students, who are facing similar issue.


Related Solutions

Using Java, write a program that takes in two integers from the keyboard called m and...
Using Java, write a program that takes in two integers from the keyboard called m and n, where m > n. Your program should print the first m natural numbers (m..1) downwards in n rows.
Java Code Question: The program is supposed to read a file and then do a little...
Java Code Question: The program is supposed to read a file and then do a little formatting and produce a new txt file. I have that functionality down. My problem is that I also need to get my program to correctly identify if a file is empty, but so far I've been unable to. Here is my program in full: import java.io.*; import java.util.Scanner; public class H1_43 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter...
Java Programming: spellcheck Write code to read in a dictionary from the current directory called "dict.txt"...
Java Programming: spellcheck Write code to read in a dictionary from the current directory called "dict.txt" (you can find this in the current directory/data) Add each word to a hash map after splitting words and throwing away punctuation (see the demo). open a file called "spell.txt" to check in the current directory. Print out every word in spell.txt that is NOT in the dictionary. Example: if spell.txt contains: hello, this is a test. 2152189u5 Misspelled! cApitalized The output should be:...
Write a complete Java program to solve the following problem. Read two positive integers from the...
Write a complete Java program to solve the following problem. Read two positive integers from the user and print all the multiple of five in between them. You can assume the second number is bigger than the first. For example if the first number is 1 and the second number is 10, then your program should output 5 10 Java must be grade 11 work easy to understand and not complicated code
Please write a java program to write to a text file and to read from a...
Please write a java program to write to a text file and to read from a text file.
Using java, I need to make a program that reverses a file. The program will read...
Using java, I need to make a program that reverses a file. The program will read the text file character by character, push the characters into a stack, then pop the characters into a new text file (with each character in revers order) EX: Hello World                       eyB       Bye            becomes    dlroW olleH I have the Stack and the Linked List part of this taken care of, I'm just having trouble connecting the stack and the text file together and...
Read previously created binary file using ObjectInputStream Create an appropriate instance of HashMap from Java library...
Read previously created binary file using ObjectInputStream Create an appropriate instance of HashMap from Java library Populate the HashMap with data from binary file Display the information read in a user friendly format Problem: Given: Words.dat – a binary file consisting of all the words in War and Peace Goal: Read the words in from the binary file and figure out how many times each word appears in the file. Display the results to the user. Use a HashMap with...
Write a Fortran program that is able to read in the data file. The file has...
Write a Fortran program that is able to read in the data file. The file has lines with the structure: 19990122 88888 30.5 Where: i) the first is an 8 digit code with the date: yyyymmdd (yyyy is the year, mm is the month, and dd is the day) ii) the second is the five digit odometer reading of a car iii) the third is the amount of fuel put into the car on that date to fill the tank...
java question: How would you be able to store a matrix from a text file into...
java question: How would you be able to store a matrix from a text file into a linked or doubly linked list, if you cannot use 2D arrays? input example: 1 2 3 4 1 3 2 4 4 2 3 1
Write a Java program to read in words from the given file “word.txt”. a. Prompt the...
Write a Java program to read in words from the given file “word.txt”. a. Prompt the user for two words b. Print out how many words in the file fall between those words c. If one of the two words is not contained in the file, print out which word is not found in the file d. If both words are not found in the file, print out a message e. Sample output: Please type in two words: hello computer...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT