Program wczytujący liczby całkowite

0

Witam, mam problem z tym zadaniem, jako wynik wyświetla mi 16 :( Mógłby mnie ktoś nakierować?

Pozdrawiam, Sylwia :)

W pliku c:\Temp\iter.txt podane są trzy liczby całkowite: start end limit.
Napisać program wczytujący te trzy liczby i sumujący liczby całkowite od start do end, ale przerywającą sumowanie gdy wartość sumy osiągnie lub przekroczy zadane ograniczenie limit.
Program ma wypisać na konsoli jedną liczbę: wynik sumowania.

Dla przykładu, jeśli w pliku c:\Temp\iter.txt podano:
1 3 6
to na konsoli uzyskamy:
6

Nazwa pliku, jego postać oraz postać wyniku na konsoli jest obowiązkowa. Rozwiązanie nie spełniające tych wymagań otrzymują 0 punktów.
Rozwiązania z błędnym wynikiem otrzymują 0 punktów.
Ci z Państwa którzy korzystają z innych systemów plikowych niż obecne w Windows testują program w swoim systemie, po czym przed uploadem zamieniają w kodzie nazwę pliku na wymaganą.

Uwaga: proszę w żadnym razie nie linkować pliku jako zasobu do projektu Eclipse.

 package Zadania5;
 
import java.io.*;
import java.util.*;
 
public class Iter {
 
     
		
		public static void main(String[] args) throws FileNotFoundException  {
         
         
   
                 File plik =  new File("c:/Temp/iter.txt");  
                
              
			
				Scanner scan = new Scanner (new File("c:/Temp/iter.txt"));
                   
                 
                   
                 int start=0;
                 int sum=0;
                    int end=0;
                    int limit=0;
                   
                    start = scan.nextInt();
                    end = scan.nextInt();
                    limit = scan.nextInt();
                   
                  for (int i = start; i <= end && sum <= limit; i++)
                    sum += i;
                   
                 
                  try {
                      for (Scanner sc = new Scanner(plik); sc.hasNextInt(); sum += sc.nextInt());  
                    System.out.println(sum);
                   
                   
                   
                    } catch (Exception exc) {
                        System.out.println("exception");
                    }
                   
   
            }
 
        }
0
 
for (int i = start; i <= end && sum <= limit; i++)
                    sum += i;

tutaj zliczasz to, co powinnaś

 
try {
                      for (Scanner sc = new Scanner(plik); sc.hasNextInt(); sum += sc.nextInt());  
                    System.out.println(sum);
 
 
 
                    } catch (Exception exc) {
                        System.out.println("exception");
                    }

a tutaj jeszcze raz czytasz liczby z pliku i dodajesz je do wyniku (?) - 6 + 1 + 3 + 6 = 16

0

A mogę liczyć na jeszcze jakąś małą wskazówkę jak to zmodyfikować?

0

Jak w ogóle powstał ten kod? Bo że go nie napisałaś, to wiadomo. Ostatnia moja podpowiedź jest taka, że po pierwszej pętli for masz w zmiennej sum już prawidłowy wynik i nic więcej z nim nie musisz robić.

0

Dziękuje, gotowe :)

0

Po kiego to liczyć pętlą skoro jest matematyczna formuła na to?

import java.io.*;
import java.util.*;
 
public class iter
  {
   public static void main(String[] args)
     {
      try
        {
         Scanner scan=new Scanner(new File("iter.txt"));
         int start=scan.nextInt(),end=scan.nextInt(),limit=scan.nextInt();
         System.out.println(Math.min(limit,(end+start)*(end-start+1)/2));
         //int sum=0;
         //for(int i=start;(i<=end)&&(sum<=limit);++i) sum+=i;
         System.out.println(sum);
        }
      catch(FileNotFoundException exc)
        {
         System.out.println("FileNotFoundException");
        }
     } 
  }

Na specjalne zamówienie od @bogdans:

import java.io.*;
import java.util.*;
 
public class iter
  {
   public static void main(String[] args)
     {
      try
        {
         Scanner scan=new Scanner(new File("iter.txt"));
         int start=scan.nextInt(),end=scan.nextInt(),limit=scan.nextInt();
         end=(int)Math.max(start,Math.min(end,Math.ceil(0.5*(Math.sqrt(1+4*start*(start-1)+8*limit)-1))));
         System.out.println(0.5*(end+start)*(end-start+1));
        }
      catch(FileNotFoundException exc)
        {
         System.out.println("A gdzie plik? Nie ma pliku!");
        }
     } 
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1